Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

[SOLUCIONADO] Renombramientos raros

Estas en el tema de Renombramientos raros en el foro de Bases de Datos General en Foros del Web. Hola a todos, tengo una consulta para hacerles y es que tengo 2 tablas: tipo_producto ( tpId , tpNombre) aplicaciones ( aplId , aplCoordCul, pisId, ...
  #1 (permalink)  
Antiguo 25/08/2016, 23:17
Avatar de detective_jd  
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años, 7 meses
Puntos: 6
Renombramientos raros

Hola a todos, tengo una consulta para hacerles y es que tengo 2 tablas:

tipo_producto (tpId, tpNombre)

aplicaciones (aplId, aplCoordCul, pisId, aplAreaAplicada, aplFaja, aplFechaIni, aplFechaFin, aplTratamiento, aplViento, tpId, aplTaquiIni, aplTaquiFin, aplPadron, aplCultivo, aplCaudal, aplDosis, usuId, usuPiloto, usuChofer, vehAero, vehTerr)

tipo_producto (tpId) => tpId

y necesito obtener la el mes, año, cantidad de aplicaciones sólidas, líquidas y siembras, pero no me obtiene nada, la verdad no sé xq no me anda bien, creo que el problema está en los inner joins pero no se me ocurre otra idea de cómo arreglarlo.

Código MySQL:
Ver original
  1. select month(a.aplFechaIni) as mes, year(a.aplFechaIni) as anio,
  2. count(s.tpId) as cantSol, count(l.tpId) as cantLiq
  3. from aplicaciones a
  4. inner join aplicaciones s on a.aplId = s.aplId
  5. inner join tipo_producto sp on s.tpId = sp.tpId
  6. inner join aplicaciones l on a.aplId = l.aplId
  7. inner join tipo_producto lp on l.tpId = lp.tpId
  8. inner join aplicaciones si on a.aplId = si.aplId
  9. inner join tipo_producto sip on si.tpId = sip.tpId
  10. where sp.tpNombre = "Solida" and lp.tpNombre = "Liquida" and sip.tpNombre="Siembra" and year(a.aplFechaIni) = year(now())
  11. group by month(a.aplFechaIni)
  12. order by month(a.aplFechaIni)

Espero que me pueden ayudar, Saludos
  #2 (permalink)  
Antiguo 26/08/2016, 06:46
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Renombramientos raros

Si cada registro de aplicaciones corresponde a una aplicación, de un determinado tipo, no puedes hacer un INNER JOIN entre ellas, porque sus ID deberían ser diferentes. En todo caso para hacer sumatorias así es mejor jugar un poco:
Código SQL:
Ver original
  1. SELECT
  2.   MONTH(a.aplFechaIni) mes,
  3.   YEAR(a.aplFechaIni) anio,
  4.   SUM(IF(sp.tpNombre = 'Solida', 1, 0)) cantSol,
  5.   SUM(IF(sp.tpNombre = 'Liquida', 1, 0)) cantLiq,
  6.   SUM(IF(sp.tpNombre = 'Siembra', 1, 0)) cantSiembra
  7. FROM aplicaciones a
  8.     INNER JOIN tipo_producto sp ON a.tpId = sp.tpId
  9. WHERE YEAR(a.aplFechaIni) = YEAR(CURDATE())
  10. GROUP BY MONTH(a.aplFechaIni)
  11. ORDER BY MONTH(a.aplFechaIni)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 28/09/2016, 22:29
Avatar de detective_jd  
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Renombramientos raros

Muchas gracias, me resolviste el problema con eso. Saludos

Etiquetas: raros, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:22.