![]() |
#1 |
Участник
|
Не работают 2 notexists join
Проблема вот в чём:
В select е присутствуют сразу 2 notexists join PHP Code:
Если же поменять местами PHP Code:
Помогите, как побороть эту беду? Необходимо выбрать только те записи из table1 для которых нет аналогов ни в table2, ни в table3. |
|
![]() |
#2 |
Участник
|
можно сделать два select'a.
а еще можно left outer join и right outer join использовать (к сожалению, не помню, как аналоги называются). |
|
![]() |
#3 |
Участник
|
Quote:
можно сделать два select'a.
т.к. к примеру в Table1 содержится 1; 2; 3; 4; 5. в Table2 содержится 2; 4. в Table2 содержится 3; 4. В результате должно получиться : 1; 5. |
|
![]() |
#4 |
Участник
|
По моему будет работать если сделать так:
while select table1 notexists join table2 where table2.field1 == table1.field1 notexists join table3 where table3.field1 == table2.field1 |
|
![]() |
#5 |
Участник
|
1. создаем временную табличку
create #temptable { field1 nvarchar (20) } 2. запускаем первый селект insert into #temptable (field1) select нужноеполе from table t1 inner join table1 t2 where t1.нужноеполе != t2.нужноеполе 3. запускаем второй селект select нужноеполе from #temptable t3 inner join table t2 where t3.нужноеполе != t2.нужноеполе должно сработать. |
|
![]() |
#6 |
Участник
|
2 mtik
Quote:
По моему будет работать если сделать так:
2 DavidA Вся идея была в том, что бы обойтись одним запросом, и средствами Аксапты. |
|
![]() |
#7 |
Участник
|
хм...
пришлите весь код запроса. |
|
![]() |
#8 |
Участник
|
Quote:
пришлите весь код запроса.
|
|
![]() |
#9 |
Модератор
|
Не будут правильно работать ни два notexists join, ни два outer join к одной таблице - смотрите на формируемый запрос
|
|
![]() |
#10 |
Участник
|
В SQL'е я бы предложил связывать таблицы по inner join, благо есть общие поля, а все условия выборки переносить в where. Уверен, что и в X++ следует использовать подобный механизм.
|
|
![]() |
#11 |
Участник
|
2DavidA
Quote:
В SQL'е я бы предложил
Проблема состоит в том что Аксапта не корректно формирует запрос для SQL'а . А точнее не правильно расставляет скобки. Вот что показали иследования: после того как будет встречена конструкция notexists join и потом следуют другие join'ы Аксапта помещает селекты относящиеся к этим join'ам в скобки первого notexists join. |
|
![]() |
#12 |
Участник
|
Любопытное сведение. Спасибо, что раскопали.
то есть если написать while select table1 notexists join table2 where table2.field1 == table1.field1 && table3.field1 == table1.field1 notexists join table3 то пройдет выборка по трем таблицам? |
|
![]() |
#13 |
Участник
|
Нет!
Второй notexists не будет выполняться. |
|
![]() |
#14 |
Участник
|
Эта бага еще со времен 2.1 висит.
Средствами ахарты ветвящиеся запросы не иннер джойн НЕ СТРОЯТСЯ.
Только плоские. т.е. можно попробовать как - нибудь развернуть этот запрос в цепочку таб2 - таб1 - таб3 пытайтесь.... Альтернатеива одна - временная таблица. |
|
|
This post has been rated by: savel (1). |
«
Previous Thread
|
Next Thread
»
|
![]() |
||||
Thread | Replies | |||
AX UK: Join the Virtual Partner Community | 0 | |||
Глюки в Query с разными типами Join (в т.ч. NonExistsJoin) к одной таблице | 10 | |||
Проблема с Exists Join | 5 | |||
2 и более OUTER JOIN к одному паренту | 21 |
|