2012-03-10 115 views
0

给定关系的人(ID,名称momid,dadid)查询结果不匹配所期望的结果

返回所有兄弟姐妹(即那些有共同momid,dadid)

例如1,2-

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

我有解决方案还不是很确定,如果它works..it是

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

我相信这是写解决方案,但它导致一排1,1等是查询逻辑错了吗?

回答

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

否则正确的,但你必须加入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