Показать сообщение отдельно
Старый 16.07.2010, 11:46   #6  
Roman N. Krivov is offline
Roman N. Krivov
Участник
 
25 / 11 (1) +
Регистрация: 04.05.2010
Адрес: Мир, Россия, Московская область
Цитата:
если честно, то по-моему, в коде полная фигня написана.
но разбираться ни сил, ни желания.
Плохо когда не пытаются разобраться.

Задание:
Нужно выбрать все открытые заказы у которых существует хотя бы одна строка с зарезервированным количеством != 0 И чтобы не делать каждый раз CustTable::Find() нужно при'join'ить CustTable

Цитата:
не понимает "два exists join".
Тут не "два exists join", а "inner join + exists join"
Цитата:
вкратце: не используйте exists join без необходимости. не надо с его помощью эмулировать left join.
А никто и не пытается эмулировать? Да и зачем, если left join и так хорошо работает?
Цитата:
здесь неоднократно говорилось о влиянии порядка условий в запросе на производительность.
В данном случае от перестановки условий запроса скорость не измениться
Код:
Но вам скорее всего нужно писать "!0"
Согласен, хотя зарезервированное кол-во всегда больше 0. Но во избежании проблем в будущем - исправил
Цитата:
В общем, сначала набросайте запрос мышкой в AOT.
Проверьте.
Уж потом, если захочется, ваяйте ваш код по созданию запроса и по закату солнца вручную.
Я "накидал" запрос в AOT'е и в результате получил:
Код:
SELECT * FROM SalesTable WHERE ((SalesStatus = Открыто))
В общем, не понимает он два join к одному datasource, как бы вы не старались