2010-10-07 65 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