我有一个数据库,其中一个表中有父名称。列:id、名称。 以及其他表中的id、parent_id、name。 在搜索字段中我输入名称。更不用说鲍勃、爱丽丝和汤姆了。 我必须在数据库中搜索 child 名为鲍勃、爱丽丝和汤姆的 parent 。他们可以有更多的 child ,但他们必须要这三个。
假设埃德蒙有 child :鲍勃、汤姆、巴特、爱丽丝和丽莎,理查德有鲍勃、爱丽丝和内德。
鉴于这些名称,数据库应仅返回 Edmund。
我应该如何为这个问题编写 SQL 查询,还是应该使用 PHP 来完成?
最佳答案
您可以让 child 和他们的 parent 一起加入。在 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
现在您可以使用计数值等于请求的子名称数量的父项。
关于php - 从mysql数据库获取 parent 姓名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30433824/