У меня есть следующий запросПочему LEFT OUTER JOIN не работает?
SELECT COUNT(*) FROM Samples
возвращение 628
.
Хотя следующий запрос
SELECT * FROM
(
SELECT
sa.*,
tagLists.tagNames AS tagNames,
tagLists.ProjectID AS ProjectID
FROM Samples sa
LEFT OUTER JOIN TagLists tagLists
ON sa.spotID = tagLists.taggedItemID
AND 6 = tagLists.taggedItemType
) ex
WHERE ex.ProjectID IS NULL
возвращается пустая таблица.
Другими словами, внешнее соединение запрос,
SELECT
sa.*,
tagLists.tagNames AS tagNames,
tagLists.ProjectID AS ProjectID
FROM Samples sa
LEFT OUTER JOIN TagLists tagLists
ON sa.spotID = tagLists.taggedItemID
AND 6 = tagLists.taggedItemType
не содержит какой-либо строка с ProjectID
равна нулю.
Почему? Не стоит LEFT OUTER JOIN
гарантировать, что все строки из левой таблицы должны присутствовать? не
UPDATE
К сожалению, конечно нет не-нулевых строк присоединился фактически в tagLists
.
UPDATE 2
К сожалению, ребята, я дурак: там действительно были ненулевые строки я не заботиться о ...
Вы не указали нам никаких данных, сделав этот комментарий умозрительным, но если каждая запись в «Образцах» соответствует записи в «TagLists», тогда 'ex.ProjectID' никогда не будет' NULL', что даст ваш текущий результат. –