Я искал, но не могу найти ответ на этот вопрос, поэтому я надеюсь, что кто-то может помочь. У меня есть две таблицыSQL Join/WHERE issue
Таблица 1 (проверенные элементы)
audit_session_id asset_number
Audit1 1
Audit1 2
Audit2 3
Таблица 2 (актив)
asset_number location<br>
1 15
2 10
3 15
То, что я хочу, это таблица активов, которые появляются в таблице 2, но не в таблице 1 для данного места и audit_session_id. Что у меня есть:
SELECT a.asset_number
FROM auditeditems ai
RIGHT JOIN asset a
on ai.asset_number = a.asset_number
WHERE ai.asset_number IS NULL
AND a.location_id=15;
Однако я не могу фильтровать audit_session_id как это NULL. Так что я получаю результат:
1,3, когда оно должно быть просто 1. (предполагая, что я смотрел на audit1 сессии)
Я продолжаю думать, что это должно быть прямо вперед, но не может видеть, где я м не так. Спасибо в Advance
просто наблюдение: в реальном мире, RIGHT JOIN и исчезающе редки. – Strawberry
Многие люди находят, что левое соединение трудно понять, и даже больше найти подходящее соединение, совершенно запутанное. Итак, мой совет - всегда делать левое соединение. Гораздо проще понять, что «главная таблица слева объединяет необязательные данные», а не «необязательные данные, правые присоединяются к основной таблице». – jarlh
Я согласен с плакатами выше, если бы я делал обзор кода и видел правильное соединение, я сразу же нарушу этот код. Они полезны только в чрезвычайно ограниченном наборе сценариев. –