Problemas com SELECT RIGHT JOIN (mysql - php)
Bom dia.
Estou tendo o seguinte problema: Tenho duas tabelas, A e B. Na tabela A, possuo uma coluna com nomes de máquinas (Cortadeira, Enfardadeira, Empacotadeira e Rebobinadeira) e na outra coluna algumas causas que as fizeram parar (Como Falta de Energia Elétrica, Troca de Bobina, etc).
Na Tabela B, possuo uma coluna com a listagem de todos os motivos possíveis (Na Tabela A estão apenas os que já ocorreram, cada linha mostra o nome de uma máquina e o motivo de sua parada.)
A minha intenção é que o código me devolva o número de vezes que uma máquina específica ficou parada por cada motivo, retornando o valor 0 caso ela não tenha sido parada por aquele. Estou usando o seguinte código:
SELECT B.TodosOsMotivos, A.MotivosQueAconteceram, A.Maquinas,
COUNT(A.MotivosQueAconteceram)as NumeroDeOcorrencias
FROM A
RIGHT join B on A.MotivosQueAconteceram = B.TodosOsMotivos
WHERE A.Maquinas = 'Cortadeira' OR A.Maquinas IS NULL
GROUP by MotivosQueAconteceram, Maquinas, B.TodosOsMotivos
order by B.TodosOsMotivos
Dessa forma ela me diz quantas vezes a Cortadeira ficou parada por um motivo X e retorna NULL quando nenhuma máquina parou por algum motivo. O problema é que quando a CORTADEIRA não parou por um motivo Y mas OUTRA MÁQUINA parou, ele simplesmente não me retorna valor algum, quando eu precisava que me retornasse 0/NULL. O QUE POSSO FAZER PARA MUDAR ISSO?
Estou tendo o seguinte problema: Tenho duas tabelas, A e B. Na tabela A, possuo uma coluna com nomes de máquinas (Cortadeira, Enfardadeira, Empacotadeira e Rebobinadeira) e na outra coluna algumas causas que as fizeram parar (Como Falta de Energia Elétrica, Troca de Bobina, etc).
Na Tabela B, possuo uma coluna com a listagem de todos os motivos possíveis (Na Tabela A estão apenas os que já ocorreram, cada linha mostra o nome de uma máquina e o motivo de sua parada.)
A minha intenção é que o código me devolva o número de vezes que uma máquina específica ficou parada por cada motivo, retornando o valor 0 caso ela não tenha sido parada por aquele. Estou usando o seguinte código:
SELECT B.TodosOsMotivos, A.MotivosQueAconteceram, A.Maquinas,
COUNT(A.MotivosQueAconteceram)as NumeroDeOcorrencias
FROM A
RIGHT join B on A.MotivosQueAconteceram = B.TodosOsMotivos
WHERE A.Maquinas = 'Cortadeira' OR A.Maquinas IS NULL
GROUP by MotivosQueAconteceram, Maquinas, B.TodosOsMotivos
order by B.TodosOsMotivos
Dessa forma ela me diz quantas vezes a Cortadeira ficou parada por um motivo X e retorna NULL quando nenhuma máquina parou por algum motivo. O problema é que quando a CORTADEIRA não parou por um motivo Y mas OUTRA MÁQUINA parou, ele simplesmente não me retorna valor algum, quando eu precisava que me retornasse 0/NULL. O QUE POSSO FAZER PARA MUDAR ISSO?
Renata
Curtidas 0
Melhor post
Douglas Sousa
07/03/2018
SELECT B.TodosOsMotivos, A.MotivosQueAconteceram, A.Maquinas, COUNT(A.MotivosQueAconteceram)as NumeroDeOcorrencias FROM A OUTER join B on A.MotivosQueAconteceram = B.TodosOsMotivos WHERE A.Maquinas = 'Cortadeira' OR A.Maquinas IS NULL GROUP by MotivosQueAconteceram, Maquinas, B.TodosOsMotivos order by B.TodosOsMotivos
tente com o outer join ele todos registros.
GOSTEI 2
Mais Respostas
Edson Venancio
07/03/2018
Tentou usar left Join ?
GOSTEI 0