私はマスターテーブル(table1)と詳細テーブル(table2)を持っているとしましょう。各マスターレコードには複数の詳細レコードがあります。これは私にTABLE1が持っているとして、レコードのとまったく同じ数を与えMySQL:WHEREステートメントがmaster-detailクエリに含まれていると異なる結果が表示される?
SELECT t1.id, count(t2.*)
FROM table1 as t1
LEFT JOIN table2 AS t2 ON t2.id=t1.id
GROUP BY t1.id
:今、私は、各masterrecordのためのすべてのdetailrecordsをカウントクエリをしたいです。
しかし、WHEREステートメントを追加して、0より大きいチェックフィールドを持つレコードのみをカウントすると、table1のすべてのレコードがもう取得されません。一致する詳細レコードのないものは、完全に除外されます。なぜこうなった?
SELECT t1.id, count(t2.*)
FROM table1 as t1
LEFT JOIN table2 AS t2 ON t2.id=t1.id
WHERE t2.checkfield != 0
GROUP BY t1.id
(たぶん私はこの例のためにそれを簡素化しようとしたので、何か他のものは、私の本当のクエリに間違っているが、私は、私は右のそれを得たと思います)
WHEREをANDに変更する... Nickのおかげで、自分自身のことを考えているはずです:)なぜNULLをチェックするWHERE文ではうまくいかなかったのですか? GROUP BY? – Dylan