Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从mysql数据库获取父级的名称_Php_Mysql_Sql - Fatal编程技术网

Php 从mysql数据库获取父级的名称

Php 从mysql数据库获取父级的名称,php,mysql,sql,Php,Mysql,Sql,我有一个数据库,在一个表中有父名称。列:id,name。 在另一个表id中,使用父表id和名称。 在搜索字段中输入名称。别提鲍勃、爱丽丝和汤姆。 我必须在数据库中搜索那些有孩子的父母,他们的孩子叫鲍勃、爱丽丝和汤姆。他们可以有更多的孩子,但他们必须有这三个 假设埃德蒙有孩子:鲍勃、汤姆、巴特、爱丽丝和丽莎,理查德有鲍勃、爱丽丝和内德 给定这些名称,数据库应该只返回Edmund 我应该如何为这个问题编写一个SQL查询,还是应该使用PHP来完成它?您可以将孩子和他们的父母一起加入。在WHERE子句中

我有一个数据库,在一个表中有父名称。列:id,name。 在另一个表id中,使用父表id和名称。 在搜索字段中输入名称。别提鲍勃、爱丽丝和汤姆。 我必须在数据库中搜索那些有孩子的父母,他们的孩子叫鲍勃、爱丽丝和汤姆。他们可以有更多的孩子,但他们必须有这三个

假设埃德蒙有孩子:鲍勃、汤姆、巴特、爱丽丝和丽莎,理查德有鲍勃、爱丽丝和内德

给定这些名称,数据库应该只返回Edmund


我应该如何为这个问题编写一个SQL查询,还是应该使用PHP来完成它?

您可以将孩子和他们的父母一起加入。在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

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

您需要正确定义表结构。 你可以试试这个

TableChildren
------------------
------------------
  Name      ParentID
  Bob         1
  Alice       1   
  Tom         1
  Jerry       2
  Jerry       1
ParentID是子表中的外键。 ParentID将是主键parent的表,如下所示:

TableParents
--------------
--------------
ID      Name  
1      Edmund   
2      Emma
这意味着鲍勃、爱丽丝和汤姆是埃德蒙的孩子。
杰瑞的父母都是爱德蒙和爱玛。

你用外键了吗?嗯。。。你有没有想过当你的孩子有了自己的孩子会发生什么?因此,您可能需要一个带有父列的person表,其中父列包含作为其父列的person的ID(来自同一个表)。