|
#1
|
|||
|
|||
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
|
|||
|
|||
если то что гугл выдаёт не работает, то можно наверно тупым select where
|
#3
|
|||
|
|||
select where это понятно.
А с помощью INNER JOIN наверно больше 2-ух таблиц объединить нельзя. Да? |
#4
|
|||
|
|||
Сколько хочешь таблиц. Указываешь, какие поля в двух таблицах суть одно и то же. Причём, можно делать не только цепочку, но и разветвлённый граф. Только я обычно пишу 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
|
||||
|
||||
Можно и больше 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
|
|||
|
|||
Сделал так:
Код:
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; |
#7
|
|||
|
|||
Всё работает, вот пример:
1INNER.jpg Я, правда, не использовал русские буквы. Приношу извинения: действительно, надо писать INNER, т.к. по умолчанию это LEFT, а LEFT (и RIGHT) по умолчанию OUTER join'ы. Может, ваша база не поддерживает несколько join'ов? |