【问题标题】:Getting names of parents from mysql database从mysql数据库中获取父母的名字
【发布时间】:2015-08-06 16:01:50
【问题描述】:

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

假设 Edmund 有孩子:Bob、Tom、Bart、Alice 和 Liza,Richard 有 Bob、Alice 和 Ned。

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

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

【问题讨论】:

  • 你使用外键了吗?
  • 嗯...你有没有想过当你的孩子有自己的孩子时会发生什么?因此,也许您需要一个带有父列的人员表,其中父列包含作为其父级的人的 ID(来自同一个表)。

标签: php mysql sql


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

    这意味着 Bob、Alice 和 Tom 是 Edmund 的孩子。 杰瑞的父母是埃德蒙和艾玛。

    【讨论】:

      猜你喜欢
      • 2018-04-07
      • 1970-01-01
      • 2016-06-29
      • 1970-01-01
      • 2018-04-08
      • 1970-01-01
      • 2017-12-07
      • 1970-01-01
      相关资源
      最近更新 更多