Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.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
Sql 自联接表中不存在的元组_Sql - Fatal编程技术网

Sql 自联接表中不存在的元组

Sql 自联接表中不存在的元组,sql,Sql,我正在玩一个“解决”活动网络的算法——这是一门项目管理课程。该算法在纸上工作,但为了用计算机解决它,我需要一个聪明的查询,在自连接表中查找不存在的元组 假设活动如下: A到B,A到C,B到D,C到D 我使用的名为“CPM”的表格填充如下: +----+----------+--------+---------+ | ID | Fromnode | Tonode | Counter | +----+----------+--------+---------+ | 1 | A | B

我正在玩一个“解决”活动网络的算法——这是一门项目管理课程。该算法在纸上工作,但为了用计算机解决它,我需要一个聪明的查询,在自连接表中查找不存在的元组

假设活动如下: A到B,A到C,B到D,C到D 我使用的名为“CPM”的表格填充如下:

+----+----------+--------+---------+
| ID | Fromnode | Tonode | Counter |
+----+----------+--------+---------+
|  1 | A        | B      | 0       |  
+----+----------+--------+---------+
|  2 | A        | C      | 0       | 
+----+----------+--------+---------+
|  3 | B        | D      | 0       | 
+----+----------+--------+---------+
|  4 | C        | D      | 0       | 
+----+----------+--------+---------+
我试图编写一个查询,返回所有没有相应“tonodes”的“fromnodes”。这是我写的

select id, fromnode
from cpm
where counter = 0
and not exists (select 'X'
from cpm cpm1
where tonode = cmp1.fromnode)
但这将返回所有四个元组,而不仅仅是前两个元组

使用“notexists”的查询很难理解,而自连接只会让事情变得更糟。问题应该是什么?顺便说一句,我用的是Firebird,但我认为这不是问题所在

蒂亚,
否'am

尝试外部联接:从cpm中选择a.id,a.fromnode作为左外部联接cpm作为b在a.fromnode=b.t节点上,其中b.fromnode为空。

我不知道是否接受您的答案,因为它给出了错误的结果,但至少指出了正确的结果,或者可能是我误导了您。您的查询返回“D”,而不是“A”。下面是正确的查询-选择a.id,a.fromnode from cpm a左外连接cpm b on a.fromnode=b.t其中b.fromnode为null@Noam:他的想法是正确的,他解决了问题,或者向你展示了如何解决问题,我认为他只是在问题本身上走得太快了。谢谢你接受。哦,我看错了问题。我确实认为你想要最后两行——没有正确地阅读,而不仅仅是前两行。谢谢你的更正。我想我不明白这个短语没有对应的音调。