Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по ADOQuery [D5, Access]


BillyJeans ©   (2006-02-21 13:54:00) 

Почему выполнение следующего кода:

ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('SELECT Table1.*, Table2.Name AS Name, Table3.X AS X');
ADOQuery.SQL.Add(' FROM Table1 LEFT JOIN Table2 ON Table1.RouteID = Table2.ID ');
ADOQuery.SQL.Add(' LEFT JOIN Table3 ON Table1.StopID = Table3.ID ');
ADOQuery.SQL.Add(' WHERE RouteID='+IntToStr(Value));
ADOQuery.SQL.Add(' ORDER BY Table1.SOrder');
ADOQuery.Open;

Выдает сообщение об ошибке:
Ошибка синтаксиса (пропущен оператор) в выражении запроса 'Table1.RouteID = Table2.ID LEFT JOIN Table3 ON Table1.StopID = Table3.ID'
?


msguns   (2006-02-21 15:06:00) [1]

>BillyJeans   (21.02.06 14:42) [6]
>Так джоин то не вложенный..

Правильно. Ты [2] читал ?
Если используешь акцес, то и подходи к нему с его заморочками, а не мускульными.

Написать запрос типа

Select A.*, B.Pole From (Select .. From T1 .. Left Join T2 On (T1.id=T2.id)) A
  Left Join T3 On (A.id=T3.id))

а потом "преобразовать" его в единственному селекту, но вложенному джоину слабо ?
Проверить работу запроса можно в самом акцесе. Если он там пройдет, почти гарантия, что его "возьмет" и ADO


BillyJeans   (2006-02-21 14:42:00) [2]

Так джоин то не вложенный... В запросе требуется добавить к полям одной Table пару полей из других, вот!
Access суксь, сам и тренируй


msguns   (2006-02-21 14:31:00) [3]

Не пишу в этот форум готовых сиквелей. Принципиально.
Подскажу: вложенные джоины делаются аналогично вложенным селектам.

"Тренеруй" сиквели в самом акцесе - будет быстрее.


BillyJeans   (2006-02-21 14:25:00) [4]

MySQL проглатывает эту запись на ура, а вот ADO в связке с Access плюётся :-(


BillyJeans   (2006-02-21 14:23:00) [5]

приведи пример вложенного джоин


msguns   (2006-02-21 14:03:00) [6]

Ооо.. Да это еще не все..
Для объединения с более чем одной таблицей надо использовать вложенный (через "()") джоин


msguns   (2006-02-21 14:01:00) [7]

..FROM Table1 LEFT JOIN Table2 ON (Table1.RouteID = Table2.ID )..


Наверх

Титульная страница Поиск, карта сайта Написать письмо