Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.01.2012, 11:42
vmilyoshin vmilyoshin вне форума
Прохожий
 
Регистрация: 26.10.2011
Сообщения: 15
Репутация: 10
По умолчанию INNER JOIN

Помогите объединить три таблицы связанных по id с помощью INNER JOIN.
Две таблицы у меня получается объединить.
Код:
procedure TForm1.Button4Click(Sender: TObject);
begin
  try
  DataModule1.ADOQuery3.Active:= false;
  DataModule1.ADOQuery3.SQL.Clear;
  DataModule1.ADOQuery3.SQL.Add('SELECT * FROM FIO INNER JOIN POLIS ON FIO.Код = POLIS.id');
  DataModule1.ADOQuery3.Active:= true;
  finally
  end;
end;
А как сюда же третью объединить.

Спасибо.
Ответить с цитированием
  #2  
Старый 12.01.2012, 12:46
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

если то что гугл выдаёт не работает, то можно наверно тупым select where
Ответить с цитированием
  #3  
Старый 12.01.2012, 13:06
vmilyoshin vmilyoshin вне форума
Прохожий
 
Регистрация: 26.10.2011
Сообщения: 15
Репутация: 10
По умолчанию

select where это понятно.
А с помощью INNER JOIN наверно больше 2-ух таблиц объединить нельзя. Да?
Ответить с цитированием
  #4  
Старый 12.01.2012, 13:49
AlexSku AlexSku вне форума
Специалист
 
Регистрация: 07.05.2007
Адрес: Москва
Сообщения: 884
Репутация: 21699
По умолчанию

Сколько хочешь таблиц. Указываешь, какие поля в двух таблицах суть одно и то же. Причём, можно делать не только цепочку, но и разветвлённый граф. Только я обычно пишу LEFT JOIN (это inner по умолчанию), т.к. кому-то нужно RIGHT JOIN.
Код:
from T1 left join
  T2 on T1.F1 = T2.F2 left join
  T3 on T2.F2a = T3.F3 и так далее пока не надоест

Последний раз редактировалось AlexSku, 12.01.2012 в 13:52.
Ответить с цитированием
  #5  
Старый 12.01.2012, 13:50
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Можно и больше 2 и больше 100. Ограничения только с длиной вашего SQL-скрипта. А добавляется точно так-же:
Код:
SELECT * FROM FIO 
 INNER JOIN POLIS ON FIO.Код = POLIS.id
 INNER JOIN POLIS1 ON FIO.Код = POLIS1.id
...
 INNER JOIN POLIS100 ON FIO.Код = POLIS100.id
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #6  
Старый 12.01.2012, 14:35
vmilyoshin vmilyoshin вне форума
Прохожий
 
Регистрация: 26.10.2011
Сообщения: 15
Репутация: 10
По умолчанию

Сделал так:
Код:
procedure TForm1.Button4Click(Sender: TObject);
begin
  try
  DataModule1.ADOQuery3.Active:= false;
  DataModule1.ADOQuery3.SQL.Clear;
  DataModule1.ADOQuery3.SQL.Add('SELECT * FROM FIO INNER JOIN TELEFON ON FIO.Код = TELEFON.id INNER JOIN POLIS ON FIO.Код = POLIS.id');
  DataModule1.ADOQuery3.Active:= true;
  finally
  end;
end;
Вылетает ошибка
Изображения
Тип файла: jpg sshot-1.jpg (25.5 Кбайт, 12 просмотров)
Ответить с цитированием
  #7  
Старый 12.01.2012, 17:33
AlexSku AlexSku вне форума
Специалист
 
Регистрация: 07.05.2007
Адрес: Москва
Сообщения: 884
Репутация: 21699
По умолчанию

Всё работает, вот пример:

1INNER.jpg

Я, правда, не использовал русские буквы.
Приношу извинения: действительно, надо писать INNER, т.к. по умолчанию это LEFT, а LEFT (и RIGHT) по умолчанию OUTER join'ы.
Может, ваша база не поддерживает несколько join'ов?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:29.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter