Mysql 如何针对这种情况编写sql
我对如何为这个场景生成sql语句感到非常困惑。我一直在努力,但运气不好,希望有人能帮上忙。我有三张桌子:桌上父母、桌上孩子和桌上学校Mysql 如何针对这种情况编写sql,mysql,sql,Mysql,Sql,我对如何为这个场景生成sql语句感到非常困惑。我一直在努力,但运气不好,希望有人能帮上忙。我有三张桌子:桌上父母、桌上孩子和桌上学校 -PARENTS has ID name -Children has ID parentID nam -SCHOOL has ID parentID chidrenID schoolType 我想要的是归还所有带着孩子的父母(无论他们是否入学),但如果他们入学,我需要的学校类型是“高中” 因此,大致如下(pseaduo代
-PARENTS has
ID name
-Children has
ID parentID nam
-SCHOOL has
ID parentID chidrenID schoolType
我想要的是归还所有带着孩子的父母(无论他们是否入学),但如果他们入学,我需要的学校类型是“高中”
因此,大致如下(pseaduo代码):
有什么帮助吗?我想你需要这样的帮助:
SELECT
*
FROM PARENTS p
INNER JOIN CHILDREN c ON p.ID = c.parentID
LEFT JOIN SCHOOL s ON c.ID = s.childrenID AND 'HighSchool' = s.schoolType
SELECT * from PARENTS P
inner join CHILDREN C
on P.ID=C.parentID
left join SCHOOL S
on P.ID=S.parentID
and C.ID=S.childrenID
WHERE S.schoolType is null
OR S.schoolType = 'HighSchool'
作为旁注,
SCHOOL.parentID
是不需要的-信息可以(而且可能应该)从CHILDREN.parentID
中获得。除此之外。。。。查看布尔条件-您将需要一个或
(围绕和
条件的括号将使逻辑更加明显)。请学习显式限定联接,隐式语法(逗号分隔的FROM
子句)只会使将来的一些查询变得更困难。到目前为止,您在SQL中尝试了哪些实现伪代码的方法?这看起来像一组非常简单的JOIN
操作和schoolType
上的WHERE
条件。出于某种原因,它不起作用。给出一个接近内部的错误。SQLLite有什么不同吗?因为我使用的是SQLite,所以可能不同,因为我没有使用SQLLite,所以不确定。似乎你有上面的答案:)我不想使用null作为一个值,因为我根本不可能在学校里有行,我仍然想显示孩子和家长。加上我有“接近内心”的问题。我在用sql LiterMind,它成功了。我犯了一个愚蠢的拼写错误。谢谢你的回答
SELECT * from PARENTS P
inner join CHILDREN C
on P.ID=C.parentID
left join SCHOOL S
on P.ID=S.parentID
and C.ID=S.childrenID
WHERE S.schoolType is null
OR S.schoolType = 'HighSchool'