Я работаю в SQL Server 2008. Я знаю, что при объединении двух таблиц (называть их A и B), если я хочу вернуть все записи, которые находятся в A, но не находятся в B, я использую :Фильтрация с несколькими объединениями
SELECT
columns
FROM A
LEFT JOIN B
ON A.a_key = B.b_key
WHERE B.b_key IS NULL
В моей конкретной ситуации я пытаюсь присоединиться к 3 таблицам, где одна из них является промежуточной таблицей. Давайте назовем их A, B и C (B является промежуточным стол.) Вот важные столбцы:
A: colA1, colA2
B: colB1, colB2
C: colC1, colC2
B.ColB2 соответствует A.ColA1, а C.colC1 соответствует B.colB1. Моя цель состоит в том, чтобы вернуть все записи в том, что не в С. Итак, моя догадка прямо сейчас:
SELECT
columns
FROM A
LEFT JOIN B
ON A.colA1 = B.colB2
LEFT JOIN C
ON B.ColB1 = C.colC1
WHERE C.colC1 IS NULL
Я знаю, что есть некоторые записи в которые не в C. Однако, мой запрос не возвращает эти записи. Что я делаю не так? Мое лучшее предположение на данный момент состоит в том, что мои соединения ошибочны, так как B - промежуточная таблица.
Это решение сработало для меня. Благодаря! – user3100444
@ user3100444 - рад, что он помог ура :) –