Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何针对这种情况编写sql_Mysql_Sql - Fatal编程技术网

Mysql 如何针对这种情况编写sql

Mysql 如何针对这种情况编写sql,mysql,sql,Mysql,Sql,我对如何为这个场景生成sql语句感到非常困惑。我一直在努力,但运气不好,希望有人能帮上忙。我有三张桌子:桌上父母、桌上孩子和桌上学校 -PARENTS has ID name -Children has ID parentID nam -SCHOOL has ID parentID chidrenID schoolType 我想要的是归还所有带着孩子的父母(无论他们是否入学),但如果他们入学,我需要的学校类型是“高中” 因此,大致如下(pseaduo代

我对如何为这个场景生成sql语句感到非常困惑。我一直在努力,但运气不好,希望有人能帮上忙。我有三张桌子:桌上父母、桌上孩子和桌上学校

-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'