复杂的mysql加入学生列表

问题描述:

我有我的查询这个问题。查询的目标是显示所有学生,不管他们是否在aanweezigheid表中。复杂的mysql加入学生列表

这是我的查询:

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 

任何想法?

+2

这是一个异想天开的大的查询,没有凡人的天才可以提供一个解决方案,而不知道表架构,索引集,这些表中存储的数据的性质等等。认为您可以提供它们吗? – SexyBeast

只是将您的"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 

移动你的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; 
+0

Thnx this fixed my probem – Roeliee

+0

不客气! :) – Omesh