正确加入MySQL

时间:2014-05-12 04:33:15

标签: mysql sql

我已经做了这个查询,右边连接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 

1 个答案:

答案 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