查询结果与期望的结果不匹配

时间:2012-03-10 07:34:33

标签: sql

给定一个关系人(id,name,momid,dadid)

归还所有兄弟姐妹(即那些有共同的妈妈,爸爸)

例如1,2

所以在这个查询中,我需要连续导致所有兄弟姐妹,每行有一对兄弟姐妹。

我的解决方案不太确定它是否有效..它是

select p1.id,p2.id 
from person p1,person p2 
where p1.momid=p2.momid 
and p1.dadid=p2.dadid

我相信它是写入解决方案,但它产生了一行1,1所以查询逻辑错了吗?

2 个答案:

答案 0 :(得分:2)

p1和p2都可以是您查询中的同一个人,因为您并不是说它们应该是不同的。您可以添加该条件,它应该可以正常工作;

SELECT p1.id, p2.id 
FROM person p1, person p2 
WHERE p1.momid = p2.momid 
  AND p1.dadid = p2.dadid
  AND p1.id <> p2.id

答案 1 :(得分:1)

否则正确,但您必须通过添加AND p1.id <> p2.id来过滤掉引用同一个人的记录,如下所示:

select p1.id,p2.id 
from person p1,person p2 
where p1.momid=p2.momid 
and p1.dadid=p2.dadid and p1.id <> p2.id