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

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

Можно ли сделать такую выборку одним SQL-запросом? [D7, ACCESS2002]


sergg ©   (2004-01-08 10:37:00) 

Уважаемые мастера, подскажите пожалуйста, можно ли сделать следующую выборку одним SQL-запросом:
1) Есть таблица 1 содержащая типы объектов - скажет тип "А" и тип "Б", состоящая из собственно названия типа (А и Б) и счетчика (индексного поля ?? :-) )
2)Есть таблица 2 самих объектов, где в поле "тип объекта" указывается номер записи из таблицы 1 :-)
3)И есть таблица 3 событий, происходивших с объектами, где в поле "Объект" тоже указывается номер записи (ну в смысле значения индесного поля типа счетчик) из таблицы 2.

Как можно сделать выборку всех событий, происходивших с объектами типа А?
В книжке по SQL ничего похожего я не нашел :(


sergg   (2004-01-08 23:17:00) [1]

Должно быть так :)

select * from table3,table2,table1
where
table1.objecy_name = "A" and
table2.id_t1 = table1.id and
table3.id_t2 = table2.id_t1


sergg   (2004-01-08 22:34:00) [2]

При попытке включить в запрос
ссылку на другую таблицу, например
table2.id_t1 выдается ошибка:
Invalid field name
id_t1
:((


sergg   (2004-01-08 22:17:00) [3]

Хмм, join"ы работают, спасибо DCoder, а этим путем разве лучше?


div   (2004-01-08 19:15:00) [4]

какие join"ы?

select * from table3
where
table1.objecy_name = "A" and
table2.id_t1 = table1.id and
table3.id_t2 = table2.id_t1


sergg   (2004-01-08 16:50:00) [5]

Спасибо. Сейчас почитаем что ето за джойн такой :)))


DCoder   (2004-01-08 16:14:00) [6]

select table3.id, table3.events
from table3
inner join table2 on table2.id=table3.id_t2
inner join table1 on table1.id=table2.id_t1
where table1.object_name="A"


sergg   (2004-01-08 13:52:00) [7]

Почему?? Используется:
В записях табл 3 указываются идентификаторы из табл 2 (объекты)
а в записях табл 2, в свою очередь, указываются идентификаторы из табл 1 (типы объектов)


DCoder   (2004-01-08 11:08:00) [8]

select table3.events
from table3
inner join table1 on table1.object_index=table3.object_index
where table1.object_name="A" /*можно использовать параметр*/

где events- события
Вторая таблица, как я понял, тут вообще не используется


Наверх

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