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

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

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, данный запрос возвращает набор данных


Наверх

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