我遇到了这个问题,但我一直无法弄清楚如何进行这项工作。
我有一个名为“父母”的表和一个名为“学生”的表
父母表有
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
)
我现在更新了查询,以便您可以获取父母的列表以及父母的类型(母亲或父亲)。该查询不会列出您的系统中没有列出父母的学生。您将不得不修改或编写其他查询,以确定哪些学生没有列出父母。