[英]Getting names of parents from mysql database
我在一个表中有一个带有父母姓名的数据库。 列:id,名称。 并在其他表ID,parent_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将是父母的主键表,如下所示:
TableParents
--------------
--------------
ID Name
1 Edmund
2 Emma
这意味着鲍勃,爱丽丝和汤姆是埃德蒙的孩子。 杰瑞有埃德蒙(Edmund)和艾玛(Emma)都是父母。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.