![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SQL запрос
Eugene_ © (2003-02-10 10:20:00)Здравствуйте господа!
Помогите с запросом SQL.
Необходимо сделать следующее:
Из 8 связанных (связь один-ко-многим) между собой таблиц сделать выборку по одному из полей Code.
Запрос таков:
MainForm.Query.DataSource:=MainForm.Level8;
MainForm.Query.Close;
MainForm.Query.SQL.Clear;
MainForm.Query.SQL.Add("SELECT Code FROM "Proizv,Name,Firma,Tara,Fasovka,Type,Sort,Group" WHERE PROIZV.CODE_S=NAME.CODE AND NAME.CODE_S=FIRMA.CODE AND FIRMA.CODE_S=TARA.CODE AND TARA.CODE_S=FASOVKA.CODE AND FASOVKA.CODE_S=TYPE.CODE AND TYPE.CODE_S=SORT.CODE AND SORT.CODE_S=GROUP.CODE");
MainForm.Query.ExecSQL;
MainForm.Query.Open;
К сожалению он не работает, при компиляции Delphi пишет, что более 255 элементов.
passm (2003-02-10 10:45:00) [1]jocko (10.02.03 10:36)> Все зависит от СУБД.
В системе, с которой я работаю декартово произведение эквивалентно INNER JOIN.
И продуктивности от ХП, IMHO, не будет - все равно выполнится на сервере.
Внук (2003-02-10 10:42:00) [2]I"m sorry? Вообще-то это и есть Inner Join...
jocko (2003-02-10 10:36:00) [3]а я бы использовал хран. проц., и еще декартово произведение заменил соединением inner join , а то не продуктивно, однако
passm (2003-02-10 10:30:00) [4]И CODE конкретизировать.
Внук (2003-02-10 10:29:00) [5]MainForm.Query.SQL.Add("SELECT Имя_таблицы.Code FROM "Proizv","Name","Firma","Tara","Fasovka","Type","Sort","Group" WHERE "PROIZV".CODE_S="NAME".CODE AND "NAME".CODE_S="FIRMA".CODE");
MainForm.Query.SQL.Add(" AND "FIRMA".CODE_S="TARA".CODE AND "TARA".CODE_S="FASOVKA".CODE AND "FASOVKA".CODE_S="TYPE".CODE AND "TYPE".CODE_S="SORT".CODE AND "SORT".CODE_S="GROUP".CODE");
stone (2003-02-10 10:27:00) [6]Разбей строку запроса на несколько
ExecSQL - убрать
Anatoly Podgoretsky (2003-02-10 10:23:00) [7]Это какой еде ExecSQL, данный запрос возвращает набор данных