/ / selecione de uma tabela, conte de outro onde id não está vinculado - mysql

selecione de uma tabela, conte de outro onde id não está vinculado - mysql

tabela 1

insira a descrição da imagem aqui

mesa 2

insira a descrição da imagem aqui

Saída esperada

Abrir | 2

Pendente | 0

Fechado | 0

em breve....

Eu tentei usar esta consulta abaixo

SELECT d.status , COUNT(*) num,e.name  FROM table1 d  cross join table 2 e group by name;

Que resultou em

insira a descrição da imagem aqui

Alguém pode me ajudar nisso.

Respostas:

5 para resposta № 1

Você precisa de um Associação à esquerda. Esse tipo de junção mostra todas as linhas da tabela à esquerda, mesmo quando não existem linhas da tabela à direita.

select t2.name, count(t1.id)
from table2 as t2
left join table1 as t1 on t2.name = t1.status
group by t2.name

Observe que você precisa agregar em uma coluna de table1 para produzir o 0 desejado, daí a count(t1.id). count(*) vai produzir 1 mesmo se não houver linha de table1.

UMA junção cruzada como você tem em sua consulta, simplesmente cria um produto cartesiano das duas tabelas envolvidas, resultando em cada linha da tabela à esquerda unida a cada linha da tabela certa uma vez.