Страница 1 из 1

Не знаю как правильно объединить таблицы!

Добавлено: 08 июн 2008, 18:57
Юлия
Проблема вот в чем:
у меня есть две таблицы. В первой таблице(DISK) - ID_A, DISK_1, DISK_2. Во второй(OPISANIE) - ID_B, OPISAN. В поля DISK_1 и DISK_2 я записываю ID_B. И таблички мне надо так объединить, чтобы выводилось поле OPISAN для каждого DISK_1 и DISK_2.

Interbase 6.0
Я пишу программу в Delphi и когда пытаюсь составить запрос на объединение этих таблиц, мне программа присваивает для каждого поля DISK_1 и DISK_2 соответственно ID_B1 и ID_B2. Запрос я строю таким образом - Select * from DISK d FULL JOIN OPISANIE o on d.DISK_1=o.ID_B FULL JOIN OPISANIE op on d.DISK_2=op.ID_B

это прокатывает, но выдает ошибку, что не найдено поле ID_B2. Буду признательна за помощь!

Добавлено: 08 июн 2008, 21:33
Dimitry Sibiryakov
Не стоит использовать звёздочку. Статические поля у датасета - тоже.
А за FULL JOIN - просто убивать.

Добавлено: 09 июн 2008, 11:25
WildSery
Dimitry Sibiryakov писал(а):А за FULL JOIN - просто убивать.
А за 6.0 - с особым цинизмом :lol:

Добавлено: 09 июн 2008, 13:10
Gera

Код: Выделить всё

SELECT 
  d.ID_A,
  d.DISK_1, -- или o1.ID_B AS ID_B1
  o1.OPISAN AS OPISAN_DISK_1,
  d.DISK_2, -- или o2.ID_B AS ID_B2
  o2.OPISAN AS OPISAN_DISK_2
FROM DISK d
LEFT JOIN OPISANIE o1 on d.DISK_1=o1.ID_B 
LEFT JOIN OPISANIE o2 on d.DISK_2=o2.ID_B
Если DISK_1 и DISK_2 NOT NULL, то лучше использовать INNER JOIN