Приведенный код не решает поставленную задачу. У тебя получилось примерно следующее:
( Table1.ItemId = Table2.ItemId )
Декартово произведение
(Table1.ItemId = Table3.ItemId AND Table3.ItemId NOT EXISTS(Table2.ItemId))
Вся проблема именно в том, что объединение пойдет не по типу UNION (что предполагается), а именно как декартово произведение. Представляешь количество "мусора"?
А то, что предлагает ahtoh это примерно следующее:
Table1.ItemId EXISTS((Table2.ItemId) декартово произведение (Table3.ItemId))
Поскольку составить такой Query не получится, то он предлагает то, что внутри Exists оформить как отдельный View.
Все корректно. Вопрос только в скорости такой выборки.
|