2
我有這個查詢用於報告MySQL數據庫。如果子查詢返回一些結果,則查詢工作正常。但是,如果子查詢返回錯誤'column lessonId不能爲空'的結果。我想這是合乎邏輯的,但我真的不希望報告失敗(日期是由用戶輸入的)...我希望它只輸出零的所有級別。基本上我只是需要它忽略LEFT JOIN,如果該查詢返回沒有結果。當子查詢返回NULL時,LEFT JOIN失敗
那麼我該如何解決這個問題?我嘗試了一個IF語句,但我無法得到它的工作。請幫助:)
SELECT Level.name as levelName,Lesson.name as lessonName, num_at_level
FROM Level
INNER JOIN
`Lesson`
ON Lesson.LevelId = Level.id
LEFT JOIN
(SELECT lessonId as lessonId, count(*) as num_at_level
FROM `has_Lesson`
WHERE dateStarted <= '2010-01-09'
GROUP BY lessonId
) as t_num_at_level
ON lessonId= Lesson.id;
那是天才......我想。我會在稍後嘗試,但看起來像會起作用。非常感謝。 – therealsix 2010-01-18 13:32:52
是的,我沒有自己嘗試過,所以我們會看看它是不是天才...... :-)請讓我知道它是否有效,或者是否需要進行微調。 – 2010-01-18 14:31:15
這個問題是因爲我需要子查詢中的聚合函數,所以我需要內部的WHERE。 我不小心拿出了GROUP BY子句試圖簡化查詢,所以它沒有多大意義,但我現在改變了它。 – therealsix 2010-01-18 22:08:10