我遇到了这个问题而且我无法弄清楚如何才能使这项工作。
我有一张叫做“父母”的桌子和一张名为“学生”的桌子
家长表格
id,name,lastname和type。 “类型”可以像“母亲”或“父亲”一样。
学生表格
id,name,lastname,motherid(parent table),fatherid(parent table)。
如何使用返回母亲姓名和父亲姓名的JOINS进行查询?并且知道父母可以有多个孩子,显然学生可以有两个父母,母亲和父亲......
我希望我解释得很好,先谢谢你
答案 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