从mysql数据库中获取父项的名称

时间:2015-05-25 08:11:51

标签: php mysql sql

我在一个表中有一个父名称的数据库。列:id,name。 在其他表id中,parent_id,name。 在搜索字段中输入名称。不要说鲍勃,爱丽丝和汤姆。 我必须在数据库中搜索他们有孩子的父母,他们有Bob,Alice和Tom。他们可以有更多的孩子,但他们必须有这三个孩子。

让我们说Edmund有孩子:Bob,Tom,Bart,Alice和Liza,Richard有Bob,Alice和Ned。

鉴于这些名称,数据库应仅返回Edmund。

我应该如何为这个问题编写SQL查询,还是应该用PHP编写?

2 个答案:

答案 0 :(得分: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

现在您可以使用计数值等于请求的子名称数的父母。

答案 1 :(得分:0)

您需要正确定义表结构。 你可以尝试一下......

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

ParentID是子表中的外键。 ParentID将是主键父表,如下所示:

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

这意味着Bob,Alice和Tom是Edmund的孩子。 而杰瑞同时爱德蒙和艾玛都是父母。