У меня есть подзапрос в предложении WHERE внутри подзапроса. Несмотря на проблемы с дизайном базы данных (не моя работа), Я получаю несколько странных ошибок при попытке расширить предложение WHERE верхнего уровня в этом выражении. Пример ниже РАБОТАЕТ.
LEFT OUTER JOIN CargoVoyageLocation on CargoVoyageLocation.VoyageLocationID
= (SELECT TOP 1 CargoVoyageLocation.VoyageLocationID FROM CargoVoyageLocation
JOIN Cargo on CargoVoyageLocation.CargoID = Cargo.CargoID
JOIN CargoType on Cargo.CargoTypeID = CargoType.CargoTypeID
WHERE
(CargoType.SystemName = 'HAZMAT' OR CargoType.SystemName = 'BUNKERS' OR Cargo.IsBunkers = 1)
AND
CargoVoyageLocation.VoyageLocationID
= (SELECT VoyageLocationAttribute.VoyageLocationID FROM VoyageLocationAttribute
JOIN VoyageLocationAttributeName
ON VoyageLocationAttribute.VoyageLocationAttributeNameID = VoyageLocationAttributeName.VoyageLocationAttributeNameID
WHERE VoyageLocationAttribute.VoyageLocationAttributeNameID = (SELECT VoyageLocationAttributeNameID FROM VoyageLocationAttributeName WHERE SystemName = 'PREVIOUS_VOYAGE_ID')
AND VoyageLocationAttribute.AttributeInt = v.VoyageID) ORDER BY CargoVoyageLocation.ModifiedDate DESC)
Затем я добавляю простое логическое выражение и скобки:
LEFT OUTER JOIN CargoVoyageLocation on CargoVoyageLocation.VoyageLocationID
= (SELECT TOP 1 CargoVoyageLocation.VoyageLocationID FROM CargoVoyageLocation
JOIN Cargo on CargoVoyageLocation.CargoID = Cargo.CargoID
JOIN CargoType on Cargo.CargoTypeID = CargoType.CargoTypeID
WHERE
(CargoType.SystemName = 'HAZMAT' OR CargoType.SystemName = 'BUNKERS' OR Cargo.IsBunkers = 1)
AND
Here ---> (1=0 OR CargoVoyageLocation.VoyageLocationID
= (SELECT VoyageLocationAttribute.VoyageLocationID FROM VoyageLocationAttribute
JOIN VoyageLocationAttributeName
ON VoyageLocationAttribute.VoyageLocationAttributeNameID = VoyageLocationAttributeName.VoyageLocationAttributeNameID
WHERE VoyageLocationAttribute.VoyageLocationAttributeNameID = (SELECT VoyageLocationAttributeNameID FROM VoyageLocationAttributeName WHERE SystemName = 'PREVIOUS_VOYAGE_ID')
AND VoyageLocationAttribute.AttributeInt = v.VoyageID) ORDER BY CargoVoyageLocation.ModifiedDate DESC))
Это вызывает следующую ошибку:
Я в тупике. Что здесь происходит?