Показать сообщение отдельно
Старый 12.02.2014, 16:09   #1  
McArrow is offline
McArrow
Участник
 
45 / 38 (2) +++
Регистрация: 18.05.2009
Вложенные Notexists Join в запросе
Здравствуйте, коллеги.

В очередной раз столкнулся с проблемой, связанной с объединением таблиц методом NotExists Join в запросе. Решил тактической расстановкой костылей в нужных местах, но осадочек остался . Может всё-таки есть решение? Используется DAX 4 SP 2. Ещё интересно, есть ли решение в более поздних версиях системы.

Вот такой вот запрос:
X++:
	select recid from table1
	notExists join table2
		where table2.Id == table1.Table2Id
	notExists join table3
		where table3.Id == table1.Table3Id
транслируется в sql следующим образом:

X++:
SELECT A.recid
FROM
    table1 A
WHERE
    A.DATAAREAID='DAT'
AND NOT EXISTS (SELECT 'x'
    			FROM table2 C
    			WHERE C.DATAAREAID='DAT'
    			AND C.Id=A.Table2Id
    			AND NOT EXISTS (SELECT 'x'
    							FROM table3 B
    							WHERE
    							B.DATAAREAID='DAT'
    							AND B.Id=A.Table3Id))
а хочется вот так:

X++:
SELECT A.recid
FROM
    table1 A
WHERE
    A.DATAAREAID='DAT'
AND NOT EXISTS (SELECT 'x'
    			FROM table2 C
    			WHERE C.DATAAREAID='DAT'
    			AND C.Id=A.Table2Id)
AND NOT EXISTS (SELECT 'x'
    			FROM table3 B
    			WHERE B.DATAAREAID='DAT'
    			AND B.Id=A.Table3Id)