AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.07.2004, 18:01   #1  
axaLearner is offline
axaLearner
Участник
 
88 / 17 (1) ++
Регистрация: 24.06.2004
Адрес: God knows
Select, операции над множествами
Если я не ошибаюсь, в обычном SQL я мог написать что-то вроде такого:
Select * from Customers where CustomerID not in (select CustomerID from Customers where 'что-то' = 'чему-то')
Может с ошибками написал - уже не помню синтаксиса, но, думаю, запрос понятен.
Как реализовать подобное в Аксапта с помощью while select?
Старый 22.07.2004, 18:15   #2  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Хм.... Этот запрос:

Цитата:
Select * from Customers where CustomerID not in (select CustomerID from Customers where 'что-то' = 'чему-то')
Равносилен:

PHP код:
Select from Customers where CustomerID 'что-то'  != 'чему-то' 
А в общем случае, конструкцию not in / in как правило можно заменить запросом с join, на основе которого, опять же, как правило, оптимизатор строит более удачный план запроса.
Старый 22.07.2004, 18:51   #3  
axaLearner is offline
axaLearner
Участник
 
88 / 17 (1) ++
Регистрация: 24.06.2004
Адрес: God knows
Согласен, я сильно упростил, внутренний Select, конечно же, выбирает запись из другой таблицы. Вообще я пытаюсь реализовать связь многие ко многим, т.е. есть таблица Customers с полем CustID, есть Orders с OrderID и есть связующая таблица CustOrd с 2-мя полями (они же ключ) : OrderID и CustID. Я хочу написать что-то вроде:

While Select * from Customers where CustID not in (Select CustID from CustOrd where OrderID = 17)
{
some actions;
}

т.е. в принципе, можно взять экземпляр таблицы CustOrd, отфильтровать его как нужно а потом соединить Join'ом в while select'е , но мне это не показалось красивым решением, поэтому я захотел все выразить одним красивым select'ом
Старый 23.07.2004, 09:36   #4  
dn is offline
dn
Участник
Самостоятельные клиенты AX
 
486 / 159 (6) ++++++
Регистрация: 26.03.2003
Адрес: Москва
PHP код:
Select from Customers 
    notexists join CustOrd 
        where Customers
.CustID == CustOrd.CustID &&
              
CustOrd.OrderID  == 17 
Старый 26.07.2004, 15:51   #5  
axaLearner is offline
axaLearner
Участник
 
88 / 17 (1) ++
Регистрация: 24.06.2004
Адрес: God knows
Спасибо, работает.
Теги
select, x++

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
2 while select или join? _scorp_ DAX: Программирование 9 23.01.2009 16:02
Разница NotInTTS и Found Logger DAX: База знаний и проекты 6 18.09.2008 12:35
gatesasbait: Reverse keyword on Select Statements Blog bot DAX Blogs 0 08.02.2008 00:10
Fred Shen: Always use recId to know if a select statement returns a record Blog bot DAX Blogs 0 28.10.2006 16:40
Вопрос про Demand Planner slava09 DAX: Функционал 4 25.09.2006 11:43

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 14:41.