我有以下代码:
SELECT
*
FROM
produto_unidades
join produto_notas on produto_notas.id = produto_unidades.produtoNota_id
join produto_licitacoes on produto_licitacoes.id = produto_notas.produtoLicitacoes_id
where produto_unidades.unidade_id = 2
此代码正常工作,但是我需要获取produto_licitacoes
的所有记录。
有什么主意吗?
答案 0 :(得分:1)
两个100ms
可以做到:
RIGHT JOIN
但是,对我来说,使用SELECT
*
FROM
produto_unidades
right join produto_notas on produto_notas.id = produto_unidades.produtoNota_id
right join produto_licitacoes on produto_licitacoes.id = produto_notas.produtoLicitacoes_id
and produto_unidades.unidade_id = 2
语法更容易阅读。请注意,表格以倒序显示:
LEFT JOIN
答案 1 :(得分:1)
left join
代替inner join
。将produto_licitacoes
表格设为最左侧的表格;这样可以确保produto_licitacoes
表的所有行都确实出现在结果中。where
条件(最左边的除外)转移到联接on
条件。尝试以下操作:
SELECT
*
FROM
produto_licitacoes
left join produto_notas
on produto_licitacoes.id = produto_notas.produtoLicitacoes_id
left join produto_unidades
on produto_notas.id = produto_unidades.produtoNota_id and
produto_unidades.unidade_id = 2