我已经做了这个查询,右边连接2个表,但它没有显示正确,它显示所有数据没有来自lin_doc的空阵营我做错了什么
我的查询:
select cd.id, cd.dt_ini_camp, cd.dt_fim_camp, cd.descricao, l.id_estab, l.quantidade, (select sum(quantidade) from lin_doc l where l.id_cab_doc = cd.id) as qtd
from cab_doc cd RIGHT JOIN
lin_doc l on l.id_cab_doc = cd.id
where cd.id_tipo_doc = 1
输出
1 /13-12-88/ xxxx /01 /2000 /321
它应该是这样的:
1 /13-12-88/ xxx /321
null /null /null /01 /2000/ null
答案 0 :(得分:1)
由于RIGHT JOIN,您的查询在列上的WHERE条件可能为NULL 这基本上会使它成为一个内部联接。将WHERE条件移动到JOIN条件中,事情应该按预期工作;
SELECT cd.id, cd.dt_ini_camp, cd.dt_fim_camp, cd.descricao, l.id_estab,
l.quantidade,
(SELECT SUM(quantidade) FROM lin_doc l WHERE l.id_cab_doc = cd.id) AS qtd
FROM cab_doc cd
RIGHT JOIN lin_doc l
ON l.id_cab_doc = cd.id
AND cd.id_tipo_doc = 1