У меня есть две таблицы и вы хотите объединить их вместе таким образом, чтобы исключить все значения во второй таблице. Когда я присоединяюсь к обеим таблицам, мне нужны только значения в таблице 1, и мне не нужны значения в обеих таблицах или значения только в таблице 2.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 (*)) и не повезло.
Помогите !?
Сложно сказать, без данных выборки, но довольно легко получить больше записей, когда вы присоединитесь. Возможно, вы должны сделать 'COUNT (DISTINCT sl.affiliate_id)' вместо 'count (*)' –