我遇到了这个问题,但我一直无法弄清楚如何进行这项工作。

我有一个名为“父母”的表和一个名为“学生”的表

父母表有

ID,名称,姓氏和类型。 “类型”可以保留“母亲”或“父亲”之类的东西。

学生表有

id,名称,姓氏,motherid(父母表),fatherid(父母表)。

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

希望我解释得好,谢谢

最佳答案

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

(
    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
)


我现在更新了查询,以便您可以获取父母的列表以及父母的类型(母亲或父亲)。该查询不会列出您的系统中没有列出父母的学生。您将不得不修改或编写其他查询,以确定哪些学生没有列出父母。

10-08 09:46