SELECT
tb1ok.cod_prod,
tb1ok.status as ok,
tb2nok.status as nok,
tb3def.defeitos
FROM
tb1ok
INNER JOIN tb2nok USING (cod_prod)
INNER JOIN tb3def USING (cod_prod)
O que acontece é que as tabelas não possuem os mesmos registros…
Só vai aparecer os registros q tem semelhantes relacionados pela chave.
o que tentei fazer agora foi uma tabela com todos os registros “chave” que tem nas duas tabela… e fazer um LEFT :
SELECT
ass.cod_prod,
tb1ok.status as ok,
tb2nok.status as nok
tb3def.defeitos
FROM
-- lista com todos os produtos:
( select tb0.cod_prod from tb0 group by tb0.cod_prod ) ass
left JOIN tb1ok using(cod_prod)
left JOIN tb2nok using(cod_prod)
left JOIN tb3def using(cod_prod)
Funcionou, mas o desempenho piorou em alguns milisegundos.
Obrigado.
M
mixulidio
Pior q não adiantou…
Alguns registros ficaram de Fora…
Os registros que não possuem correspondência na outra tabela… registros “sozinhos” que estão na terceira tabela não apareceram.
A unica solução que vejo até agora é fazer uma outra consulta só com os que não existem e fazer uma união = UNION.
charleston10
tente CROSS JOIN
M
mixulidio
No cross join… a primeira coluna desaparece… pois coloco o “alias” da tabela :
SELECT
ass.cod_prod, —<<<< sáo vai aparecer os que tiverem nesta tabela
tb1ok.status as ok,
tb2nok.status as nok
tb3def.defeitos
…
Aí eu coloco o asterisco *
e não forma as colunas certinhas, as tabelas se repetem nas colunas:
cod_prod | status | cod_prod | status | cod_prod | status
…53…1…45…1…55…1…
drsmachado
Me parece que apenas com uma junção de alguns cursores e uma stored procedure é que será possível fazer isso.