【问题标题】:Multiples SQL Joins多重 SQL 连接
【发布时间】:2013-12-03 20:39:07
【问题描述】:

我遇到了这个问题,但我无法弄清楚如何才能完成这项工作。

我有一张叫做“父母”的桌子和一张叫做“学生”的桌子

Parents表有

id、姓名、姓氏和类型。 “类型”包含“母亲”或“父亲”之类的内容。

学生表有

id、name、lastname、motherid(parents table)、fatherid(parents table)。

如何使用返回母亲姓名和父亲姓名的 JOINS 进行查询?并且知道父母可以有多个孩子,显然一个学生可以有两个父母,母亲和父亲......

希望我解释清楚,谢谢你

【问题讨论】:

    标签: php mysql sql join


    【解决方案1】:

    这是完成您所要求的简单方法:

    (
        SELECT      KIDS1.id as student_id
                    KIDS1.name as student_firstname
                    KIDS1.lastname as student_lastname
                    MOMS.id as parent_id
                    MOMS.name as parent_firstname
                    MOMS.lastname as parent_lastname
                    MOMS.type as parent_type
        FROM        students KIDS1
        JOIN        parents MOMS ON KIDS1.motherid = MOMS.id
    )
    UNION
    (
        SELECT      KIDS2.id as student_id
                    KIDS2.name as student_firstname
                    KIDS2.lastname as student_lastname
                    DADS.id as parent_id
                    DADS.name as parent_firstname
                    DADS.lastname as parent_lastname
                    DADS.type as parent_type
        FROM        students KIDS2
        JOIN        parents DADS ON KIDS2.fatherid = DADS.id
    )
    

    我现在更新了我的查询,以便您可以获取父母的列表以及父母的类型(母亲或父亲)。此查询不会列出系统中未列出家长的学生。您必须修改或编写不同的查询来确定哪些学生没有列出家长。

    【讨论】:

    • 它有效,但我们必须修复一些问题。它返回具有相同名称的三列,我需要一种方法来知道母亲姓名和父亲姓名是什么现在它正在返回类似 name |姓氏 |姓名 |父类型 |姓名 | parenttype 如您所见,有同名的列,我怎样才能使它看起来像 RESULT: name |姓氏 |爸爸名字 |妈妈名 |
    • 他必须做的不止这些。现在我已经考虑了更多,UNION 查询在这种情况下会更有益。正在为您修改我的查询。
    • 我已经为您修改了我的查询,请尝试更新版本。
    【解决方案2】:

    您可以使用两个内部联接来执行此操作(不确定这是否是最好的方法) 您的两个联接看起来像:

    Select students.name, parents.name 
    FROM students 
    INNER JOIN Parents
    ON motherid = Parents.id
    INNER JOIN Parents
    ON fatherid = Parents.id
    

    【讨论】:

      猜你喜欢
      • 2021-05-07
      • 2011-10-13
      • 1970-01-01
      • 2011-12-11
      • 2011-12-12
      • 1970-01-01
      相关资源
      最近更新 更多