ansi結合とnon-ansi結合を混在させるのは良い方法ではありません。クエリのように書き換えることができる:
SELECT
PassProcessing.Serial AS Serial,
Passes.Type AS CardType,
PassProcessing.Issue AS IssueNumber,
Employees.Name,
(CASE WHEN sub.count > PassProcessing.Issue
OR PassProcessing.Cancelled = 1
THEN 1
ELSE 0
END) AS Hotlist
FROM Passes
JOIN PassProcessing ON Passes.ID = PassProcessing.Passes_ID
JOIN Employees ON Passes.Employee_ID = Employees.ID
LEFT JOIN
(SELECT Passes_ID, COUNT(*) AS count
FROM PassProcessing
GROUP BY Passes_ID) sub
ON PassProcessing.Passes_ID = sub.Passes_ID
正確な理由は、以前on this page.
を発見カンマ演算子(、)との両方が同じ 優先ので、結合式のT1を有していたJOINすることができます、t2 JOIN t3は ((t1、t2)JOIN t3)と解釈されました。今すぐJOINの方が優先順位が高いので、式 は(t1、(t2 JOIN t3))と解釈されます。この変更は、ON句を使用するステートメント に影響します。その句は、結合のオペランドの列 のみを参照することができ、優先順位の変更によって、これらのオペランドの解釈が変更されます( )。
2番目のフィドルでは、 'on clause'の 'Unprocessed.Passes_ID'という項目が提供されています。 –
@ Dr.Avalancheはい、申し訳ありません。それを言っていたはずです。 – Richard
奇妙なことに、「INNER JOIN」に変更すると、http://sqlfiddle.com/#!9/ed700/8 –