我的查询有这个问题。查询的目标是显示所有学生,无论他们是否在anweezigheid表中。
这是我的问题:
SELECT
s.studentNaam
, s.studentAchterNaam
, s.studentStamNummer
, s.klasID
, k.klasNaam
, k.klasID
, a.studentID
, a.aanwezigTijdAan
, a.aanwezigTijdAf
, a.aanwezigDag
, a.aanwezigStatus
FROM studenten AS s
LEFT JOIN klassen AS k ON s.klasID=k.klasID
LEFT JOIN aanweezigheid AS a ON a.studentID=s.studentID
WHERE k.klasNaam = 'MD2a'
AND a.aanwezigDag='2012-08-28'
ORDER BY s.studentAchterNaam ASC
有什么想法吗?
将WHERE
条件移动到LEFT JOIN ON
子句:
SELECT ...
FROM studenten AS s
LEFT JOIN klassen AS k
ON s.klasID=k.klasID
AND k.klasNaam = 'MD2a'
LEFT JOIN aanweezigheid AS a
ON a.studentID=s.studentID
AND a.aanwezigDag='2012-08-28'
ORDER BY s.studentAchterNaam ASC;
只需将您的"a"
依赖项移动到ON
项中。这样你就不会过滤掉WHERE
:中的任何内容
SELECT
s.studentNaam
, s.studentAchterNaam
, s.studentStamNummer
, s.klasID
, k.klasNaam
, k.klasID
, a.studentID
, a.aanwezigTijdAan
, a.aanwezigTijdAf
, a.aanwezigDag
, a.aanwezigStatus
FROM studenten AS s
LEFT JOIN klassen AS k ON s.klasID=k.klasID
LEFT JOIN aanweezigheid AS a ON a.studentID=s.studentID
AND a.aanwezigDag='2012-08-28'
WHERE k.klasNaam = 'MD2a'
ORDER BY s.studentAchterNaam ASC