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

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

Access. JOIN более 2 таблиц [D6]


msguns ©   (2005-10-06 12:26:00) 

Конструкция типа

SELECT M.ID, M.ID1, M.ID2, D1.NAME, D2.NAME
  FROM MASTER M
  LEFT JOIN DETAL1 D1 ON (M.ID1=D1.ID)
  LEFT JOIN DETAL2 D2 ON (M.ID2=D2.ID)

в акцесе не катит.
В справке по джету написано

Операции LEFT JOIN, RIGHT JOIN
Объединяют записи исходных таблиц при использовании в любом предложении FROM.

Синтаксис
FROM таблица_1 [ LEFT | RIGHT ] JOIN таблица_2
   ON таблица_1.поле_1 оператор таблица_2.поле_2


Выходит, что нельзя объединить более 2-х таблиц ?

Можно, конечно, через вложенные запросы, но, если полей много, запрос получается монстроидальным.

Как красивше ?

Спасибо за помощь и советы


msguns   (2005-10-06 15:18:00) [1]

Правда, к нему надо приноровиться ;))
В частности, при создании связанных запросов большое значение имеет последовательность выбора таблиц. За ID таблиц конструктор хватается мертвой хваткой ;). Так, что потом без правки "ручками" в сиквел-моде не обойтись ;(


isasa   (2005-10-06 15:12:00) [2]

:)
Окно "База данных" -> Закладка "Запросы"+Кнопка "Конструктор" ="Конструктор запросов""


Seg   (2005-10-06 13:58:00) [3]

А что такое "конструктор запросов"?


msguns   (2005-10-06 12:59:00) [4]

>isasa ©   (06.10.05 12:33) [2]
>Конструктор запросов???

Ну конечно же !!!

Решение:

SELECT M.ID, M.ID1, M.ID2, D1.NAME AS D1NAME, D2.NAME AS D2NAME
  FROM
    (M LEFT JOIN D1 ON (M.ID1=D1.ID))
    LEFT JOIN D2 ON (M.ID2=D2.ID)

и хоть надцать таблиц !

А все потому, что считаю себя настолько "грамотным", что вообще не пользуюсь конструктором, а сразу перехожу в сиквель-моду ;))

Спасибо большое !


Romkin   (2005-10-06 12:58:00) [5]

Скорее, по-старому:
SELECT M.ID, M.ID1, M.ID2, D1.NAME, D2.NAME
 FROM (MASTER M LEFT JOIN DETAL1 D1 ON M.ID1=D1.ID)
   LEFT JOIN DETAL2 D2 ON M.ID2=D2.ID  


Курдль   (2005-10-06 12:42:00) [6]

А если извратиться типа :

select * from D1 right outer join M on ... left outer join D2 on ...


isasa   (2005-10-06 12:33:00) [7]

Access. Конструктор запросов???


msguns   (2005-10-06 12:33:00) [8]

>sniknik ©   (06.10.05 12:28) [1]
>синтаксис Access отличается от других sql серверов

Это я давно уже понял ;)))

>см. справку.

Все глаза проглядел ;))

Т.е. получается, что джойнить можно только 2 таблицы, эге ж ?


sniknik   (2005-10-06 12:28:00) [9]

синтаксис Access отличается от других sql серверов см. справку. (в другом твоем вопросе писал где искать)


Наверх

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