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