Я написал основное левое внешнее соединение на столе «Мышь на стол». Чтобы убедиться, что я получаю нужный набор и количество данных, я провел внутреннее соединение Mouse and Pad и добавил счет внутреннего соединения (звезда) к счету внешнего внешнего соединения (звезда), который больше, чем count (*) столовые мыши на 12.Графы полного внешнего левого соединения и внутреннего соединения не складываются для подсчета (*) таблицы.
Вот левые внешнее соединение:
select *
from mouse.crm_mmbi_contacts mouse
left outer join pad.lean_contact pad
on mouse.email_address = pad.email_addr
where pad.email_addr IS NULL
order by email_address
а вот внутреннее соединение:
select *
from mouse.crm_mmbi_contacts mouse
inner join pad.lean_contact pad
on mouse.email_address = pad.email_addr
order by email_address
Я побежал левые внешнее соединение без оговорки where
и результата набор был в основном всей таблицей, плюс дополнительные 12 строк. Кроме того, существует только одна строка, где адрес email_address равен NULL.
Что я должен фильтровать или редактировать?
Вы правы в своем первом абзаце о взаимосвязи между двумя таблицами. Тем не менее, я ничего не могу сделать о таблице «pad», содержащей повторяющиеся записи. Я проверил дубликаты в таблице «pad», и их много. Гораздо больше, чем разница в 12, я видел в подсчетах. Что касается 2-го абзаца, я не был очень ясен в своем первоначальном описании. Поэтому я не ожидаю, что 'inner join' выведет те же самые # записи, что и' left join'. Я действительно ожидаю, что 2 объединения будут добавлены вместе, чтобы быть равными счету (*) 'mouse' – simplycoding
. Ваше' left join' без оператора 'WHERE' должно быть ровно столько же записей, сколько и в' Mouse'. Такова природа «Левого объединения». Кроме того, если у вас есть дубликат 'email_addr' в вашей таблице пэдов, то итогом в вашем' left join' будет количество записей в вашей таблице 'mouse', а также количество дубликатов в вашей таблице« pad », где дубликат содержит 'email_addr', который также находится в' mouse'. Если дубликат в 'pad' не имеет соответствующего' email_address' в мышке, тогда он не войдет в ваш 'left join', возможно, объяснив, почему вы получаете только 12 дополнительных записей. – JNevill
Вы уверены, что последнее предложение в вашем комментарии верное?Потому что, не так ли? Как и в случае, если дубликат в 'mouse' не имеет соответствующего' email_address' в 'pad', то он не будет появляться в' left join', объясняя, почему я получаю только 12 дополнительных записей. – simplycoding