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

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

Связывание трех таблиц [D6, IB6.x]


N&N ©   (2003-04-17 16:51:00) 

Привет мастера будьте так снисходительны
подскажите особо тупому как составить правильный запрос для соединения трех таблиц. Суть дела такова
в каждой таблице есть одинаковые поля field_id, в t1 первичный ключ, а в t2 и t3 внешние.
Надо сделать запрос чтобы в первой колонке выбирались фамилии из 1-й таблицы, а во второй и третьей суммировались значения из 2-й и 3-й таблиц.
У меня при таком запросе
select t1.FIO, sum(t2.field1), sum(t3. field1)
from table1 t1
join Table2 on t1.field_id=t2.field_id
join Table3 on t1.field_id=t3.field_id
group by t1.FIO
выдает какую-то дребедень


N&N   (2003-04-23 07:49:00) [1]

Всем большое спасибо за помощь, с вашей помощью заработало


Johnmen   (2003-04-18 09:23:00) [2]

select
t1.FIO,
(select sum(t2.field1) from Table2 t2
where t1.field_id=t2.field_id) as s1,
(select sum(t3. field1) from Table3 t3
where t1.field_id=t3.field_id) as s2,
from table1 t1
group by t1.FIO


ЮЮ   (2003-04-18 08:50:00) [3]

Так и должно быть, произведение, однако.
Не знаю как в IB со вложенными запросами, типа

SELECT t1.FIO, sum1, sum2
FROM
Table1 t1
LEFT JOIN (
SELECT field_id, sum(field1) sum1
FROM Table2
GROUP by field_id
) st2 ON t1.field_id = st2.field_id
LEFT JOIN (
SELECT field_id, sum(field1) sum2
FROM Table3
GROUP by field_id
) st3 ON t1.field_id = st3.field_id

Если не поддерживаются, то подзапросы - во View, или всё это объединение - в ХП


N&N   (2003-04-18 08:40:00) [4]

Дребедень такого вида: когда присоединяю таблицу t3, то все суммы во 2-й колонке увеличиваются на количество раз, равное числу записей для каждой фамилии


Yuraz   (2003-04-17 17:19:00) [5]

where
a=b
c=d
e=f
типа так, поля свои подставь.


samalex   (2003-04-17 17:15:00) [6]

после join Table2 забыл t2, Table3 ... t3


Johnmen   (2003-04-17 17:07:00) [7]

Какую ?


Наверх

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