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

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

Не выполняется запрос! [D6, dBase, FoxPro]


paule ©   (2005-06-08 15:07:00) 

Уважаемые подскажите пожалуйста.
Нужен большой запрос. Выполняю его с помощью ADOQuery.
 ...
 ADOQuery.SQL.Clear;
 ADOQuery.SQL.Add('select t.*,w.x,td.* from temp t inner join whatisx w on w.os=t.oes and w.st=t.st and w.tipst=t.tipst
inner join techdata td on td.tipst=t.tipst');
 ADOQuery.Open;
...


Но выполняться не хочет.Пишет следующую ошибку:

"Ошибка синтаксиса(пропущен символ) в выражении запроса"

Однако стоит сократить запрос до такого:
ADOQuery.SQL.Add('select t.*,w.x from temp t inner join whatisx w on w.os=t.oes and w.st=t.st and w.tipst=t.tipst');

и работает всё прекрасно!

Скажите пожалуйста отчего возникает ошибка.База dBASE 4.


paule   (2005-06-08 17:24:00) [1]

sniknik, спасибо ваш вариант тоже сработал!


paule   (2005-06-08 17:21:00) [2]

Silver Alex, спасибо заработало!
Даже не знал что так можно!


Silver Alex   (2005-06-08 17:03:00) [3]

можно еще вот так, вроде тоже самое

select  t.*,w.x,td.* from temp t , whatisx w, techdata td
where
 w.os=t.oes
 and w.st=t.st
 and w.tipst=t.tipst
 and td.tipst=t.tipst


sniknik   (2005-06-08 15:46:00) [4]

select t.*,w.x,td.* from (temp t inner join whatisx w on w.os=t.oes and w.st=t.st and w.tipst=t.tipst) inner join techdata td on td.tipst=t.tipst

возможно


sniknik   (2005-06-08 15:39:00) [5]

от движка к движку(/SQL server-у) правила весьма сильно изменяются...
и без этого тайного знания (движок (???)) любые подсказки будут "пальцем в небо".


paule   (2005-06-08 15:28:00) [6]

P.N.P., так тоже не работет, я пробовал

sniknik, запрос написан правильно. Только может просто сама dBase такую конструкцию не поддерживает. Тогда ктонить подскажите как правильно?


sniknik   (2005-06-08 15:22:00) [7]

проблема не в размере запроса а в синтаксисе (в ошибке явно указано). второй джойн написан не по правилам.


P.N.P.   (2005-06-08 15:19:00) [8]

Это разве большой запрос? :)
Попробуй так:

 ADOQuery.SQL.Add('select t.*,w.x,td.* from temp t inner join whatisx w on w.os=t.oes and w.st=t.st and w.tipst=t.tipst');
 ADOQuery.SQL.Add('inner join techdata td on td.tipst=t.tipst');


Наверх

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