Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
右键加入MySQL_Mysql_Sql - Fatal编程技术网

右键加入MySQL

右键加入MySQL,mysql,sql,Mysql,Sql,我已经做了这个查询,右键连接了2个表,但它没有正确显示,它显示了所有数据,没有来自lin_doc的null camps,我做错了什么 我的问题是: 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

我已经做了这个查询,右键连接了2个表,但它没有正确显示,它显示了所有数据,没有来自lin_doc的null camps,我做错了什么

我的问题是:

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 

您的查询在列上具有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

虽然没有一些样本数据,但很难判断出什么是错误的。表结构和一些样本数据应该给出您显示的结果。喝了一些咖啡后,我重新阅读了问题并解决了一个问题。你可能想试试下面的答案。看起来不对。他的第一个输出,基于他引用的查询运行的输出意味着“lin_doc l”在cd.id上加入。预期的输出表示它不会在cd上联接。因此,id将返回一些将为NULL的记录。这或多或少地解决了这种情况,因为它现在显示了一些额外的NULL值和一些行,如我的第一个查询语句中所示,如果是这样的话,您的意思是您知道正确的联接是无用的,并且您正在查找UNION语句。我敢打赌,没有人会同意这个建议@挑剔的,不知道为什么你认为正确的连接不起作用。不,它适用于您拥有的有限信息。链接的小提琴假定他有1行匹配,2行不匹配。这超出了他提供的范围。他的查询和输出清楚地显示有1行是匹配的。然后他说不应该,而是不匹配,并在不匹配的字段中返回NULL。这表示他不想联接,但可能会将两个不匹配的表合并在一起(右联接)。