Muy buenas, ayer inicie una pregunta que derivo en otras que espero que alguno me pueda ayudar. Empiezo....
--------PROBLEMA 1--------------------------
Tengo 3 tablas: Lectura, Estacion y TipoEstacion
Código:
SELECT ES.id, ES.nombre AS 'nombreEstacion', TE.nombre AS 'Tipo estación', COUNT(LE.id AS 'Cuenta'
FROM estacion AS ES LEFT JOIN
lectura AS LE ON LE.idEstacion=ES.id LEFT JOIN
tipo_estacion AS TE ON TE.id=ES.idTipoEstacion
WHERE ES.eliminada=0 AND LE.resultadoNOK=2
GROUP BY ES.id
el resultado es:
ID nombreEstacion Tipo count
85 A Pistola 1
94 B Pistola 2
100 D Pistola 1
106 F Pistola 4
109 G Pistola 3
118 I Pistola 1
121 K Pistola 1
Mi problema es que hay un monton de IDs con su nombreEstacion que tienen counts 0 y no salen.
Solucion:
Código:
SELECT
ES.id,
ES.nombre nombreEstacion,
TE.nombre Tipo estación,
COUNT(LE.id) Cuenta
FROM estacion ES
LEFT JOIN lectura LE ON ES.id = LE.idEstacion
LEFT JOIN tipo_estacion ES.idTipoEstacion = TE ON TE.id
WHERE
ES.eliminada=0
AND LE.resultadoNOK=0
OR LE.idEstacion IS NULL
GROUP BY ES.id
No entiendo muy bien porque hay que añadir un "OR LE.idEstacion IS NULL" para que ocurra esto La solución que se me dio es que al hacer lefts join cuando haces un WHERE con condiciones concretas, debes sí o si indicar la condición nula. Simplemente tomas cualquier campo de la segunda tabla y le indicas "OR campo IS NULL.
En mi caso al hacer 2 lefts join deberia incluir otra condicion is null?
-----------------PROBLEMA 2----------------
Siguiente DUDA
si quiero hacer esto mismo pero con 3 counts distintos donde lo unico que cambiaria seria la condicion WHERE
LE.resultadoNOK=0 --->count1
LE.resultadoNOK=1 ---->count2
LE.resultadoNOK=2 ---->count3
La solucioin que se me dio para esto no me funciona bien:
COUNT(LE.id) Cuenta,
SUM(IF(LE.resultadoNOK=1, 1, 0)) NoOk,
SUM(IF(LE.resultadoNOK=0, 1, 0)) Ok
Creo que algo en el orden de ahi esta mal. Y como no entiendo el significado de como va esos SUM(IF)) no se arreglarlo.
-----------------------------
---------------PROBLEMA3-------------
Como es posible que si yo hago consultas independientes para cada uno de los counts me salganun numero de contenedores (rows) distintos. Es que algo estoy haciendo mal verdad???