Multiples SQL连接

时间:2013-12-03 20:39:07

标签: php mysql sql join

我遇到了这个问题而且我无法弄清楚如何才能使这项工作。

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

家长表格

id,name,lastname和type。 “类型”可以像“母亲”或“父亲”一样。

学生表格

id,name,lastname,motherid(parent table),fatherid(parent table)。

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

我希望我解释得很好,先谢谢你

2 个答案:

答案 0 :(得分: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
)

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

答案 1 :(得分:0)

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

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