1

我的查询有这个问题。查询的目标是显示所有学生,无论他们是否在 aanweezigheid 表中。

这是我的查询:

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

有任何想法吗?

4

2 回答 2

1

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;
于 2012-08-29T10:26:13.397 回答
0

只需将您的"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
于 2012-08-29T10:26:08.067 回答