2010-10-07 46 views
0

父我有两个表MySQL的 - 寻找与孩子

parent{ 
    parent_id 
} 

child{ 
    child_id 
    parent_id 
} 

我需要找到一个父母与参数是儿童ID

例:查找父恰好有孩子(1,2,3)

我想 “凡child_id IN(1,2,3)”,但它会在情况下,家长返回不正确的父母有孩子(1,2,3,4)

我可以硬编码用PHP,但我索要mysql解决方案。

回答

1

也许会添加一个COUNT()条件,如果一个父(1,2,3)对于儿童和3个孩子来说都很好!

SELECT * 
FROM parent NATURAL JOIN child 
WHERE child.child_id IN (1, 2, 3) 
GROUP BY parent.parent_id 
HAVING COUNT(child.child_id) = 3 

(未测试)

+0

你可以写我的查询:d – complez 2010-10-07 11:41:10

+0

见我的编辑,也许它会工作。 – MatTheCat 2010-10-07 11:57:18

+0

它不起作用,但我自己找到了解决方案。 – complez 2010-10-07 12:41:58

0

我找到了解决办法

SELECT parent_id, child_id, count(child_id) as n, sum(child_id) as m FROM child 
group by parent_id 
HAVING child_id IN (1, 2, 3) AND n = 3 AND m = 6