У меня есть запрос, подобный следующему, который возвращает правильное количество строк, которое я ожидаю. (Он должен соответствовать аналогичному запросу, который возвращает те же наборы данных, но с другой связанной информацией из других связанных таблиц.
SELECT *
FROM LK
INNER JOIN STC ON LK.V = STC.VI
LEFT OUTER JOIN BC ON LK.BC = BC.ID
LEFT OUTER JOIN K AS LT ON ISNULL(BC.ZA, LK.VH) = LT.KNN
WHERE
LT.KI IS NOT NULL AND LT.KS = 0
OR
LT.KI IS NULL
ORDER BY
LK.Z
Но как только я добавляю другие внутренние соединения, я фактически получаю больше строк назад. Я думал, что внутреннее соединение возвращает строки только тогда, когда информация найдена по обе стороны от соединения, поэтому я ожидал получить либо одинаковые, либо меньшие строки обратно. Но я обхожу вдвое больше.
Например:
SELECT *
FROM LK
INNER JOIN STC ON LK.V = STC.VI
INNER JOIN VK ON LK.V = VK.ID
INNER JOIN K AS A ON VK.AIN = A.KNN
LEFT OUTER JOIN BC ON LK.BC = BC.ID
LEFT OUTER JOIN K AS LT ON ISNULL(BC.ZA, LK.VH) = LT.KNN
WHERE
LT.KI IS NOT NULL AND LT.KS = 0
OR
LT.KI IS NULL
ORDER BY
LK.Z
Имеет ли это смысл? Как добавление еще двух внутренних объединений может привести к возвращению большего количества строк?
И еще, что касается моей реальной проблемы, как я могу настроить второй запрос, чтобы он возвращал те же строки, что и первый запрос, но с дополнительными столбцами из соединенных таблиц?