2 つのテーブルがあり、2 番目のテーブルのすべての値が除外されるようにそれらを結合したいと考えています。両方のテーブルを結合すると、テーブル 1 の値のみが必要になり、両方のテーブルの値やテーブル 2 の値は必要ありません。
これは LEFT JOIN または LEFT OUTER JOIN で行われると思っていましたが、奇妙な発見がいくつかあります。
すべてのデータを確認すると、次のカウントがあります。
-- TOTAL LEADS: 10067
SELECT COUNT(*) FROM sold_leads AS sl
WHERE sl.affiliate_id IN(1000,1001,1002,1033)
AND sl.create_date >= '2013-1-1'
AND sl.lead_type = 'AUTO';
ただし、表 1 の値だけを見つけようとすると、より高い数値が見つかりますが、これは不可能です。
-- How many had No suspension/dui, sr22, and <=2 accidents AND <=2 tickets: 13931
SELECT COUNT(*) FROM sold_leads AS sl
INNER JOIN drivers AS dr ON sl.lead_id = dr.lead_id
LEFT OUTER JOIN duis AS duis ON sl.lead_id = duis.driver_id
LEFT OUTER JOIN accidents AS ac ON sl.lead_id = ac.driver_id
WHERE sl.affiliate_id IN(1000,1001,1002,1033)
AND sl.create_date >= '2013-1-1'
AND dr.relationship_type = 'SELF';
合計数が、いくつかのテーブルを結合していくつかの制限を追加した場合の数よりも少なくなる方法はありません. 私は何を間違っていますか。
また、スキーマを提供していないことはわかっていますが、2 つ以下の事故だけを選択するにはどうすればよいでしょうか。driver_id を持つ事故テーブルがありますが、HAVING(COUNT(*)) のさまざまなバリエーションで遊んだことがありますが、うまくいきませんでした。
ヘルプ!?