2015-05-25 23 views
0

我有一個父表名在一個表中的數據庫。列:id,名稱。 並在其他表中的id,parent_id,name。 在搜索字段中輸入名稱。免得說鮑勃,愛麗絲和湯姆。 我必須在數據庫中搜索父母,他們有名叫Bob,Alice和Tom的孩子。他們可以有更多的孩子,但他們必須有這三個孩子。可以說埃德蒙有孩子:鮑勃,湯姆,巴特,愛麗絲和麗莎,理查德有鮑勃,愛麗絲和奈德。從mysql數據庫中獲取父母名字

鑑於這些名稱,數據庫應該只返回Edmund。

我應該如何爲這個問題寫一個SQL查詢,或者我應該用PHP來做這件事?

+0

你使用外鍵嗎? –

+1

嗯...你有沒有想過當你的孩子有自己的孩子會發生什麼? 所以,也許你需要一個帶有父列的人員表,其中父列包含他們父母的人的ID(來自同一張表)。 – foxbeefly

回答

0

你可以和他們的父母一起加入孩子。在WHERE子句您過濾給孩子取名字

WHERE c.name IN ('Bob', 'Alice', 'Tom') 

那你這組由父ID。

未測試:

SELECT p.id, MAX(p.name), count(*) 
FROM child AS c 
JOIN parent AS p ON c.parent_id = p.id 
WHERE c.name IN ('Bob', 'Alice', 'Tom') 
GROUP BY p.id 

現在你可以使用它的計數值等於要求孩子名字的數量父母。

0

您需要正確定義表結構。 您可以嘗試了這一點...

TableChildren 
------------------ 
------------------ 
    Name  ParentID 
    Bob   1 
    Alice  1 
    Tom   1 
    Jerry  2 
    Jerry  1 

PARENTID是在孩子們表的外鍵。 PARENTID將是一個主鍵父母的表,這將是這樣的:

TableParents 
-------------- 
-------------- 
ID  Name 
1  Edmund 
2  Emma 

這將意味着鮑勃,愛麗絲和湯姆是在埃德蒙的孩子。 傑裏有埃德蒙和艾瑪作爲父母。