telepath |
Отправлено: 28.02.2005, 15:36 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 132
|
Доброго времени суток, не подскажете как создать запрос на несколько таблиц и чтобы был еще и вложенный на одну из них.
Например (неработающий пример ) :
CODE | select org_name, per_name, (sumW+sumB) from orgs, periods_det, res
where code_id in (40) and rec_id in
(select rec_id from rec where years_num=2004 and typ_id=2 ) |
таблицы:
orgs — два поля (org_id, org_name)
periods_det — (per_name, per_id)
rec — (rec_id, per_id, org_id, years_num, typ_id)
res — (rec_id, sumW, sumB, code_id)
|
|
Gedeon |
Отправлено: 28.02.2005, 16:08 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Почему так
а не так
Ну и еще хочу посоветовать поставить имена таблиц перед полями, у Вас rec_id и в rec и в res откуда же серверу знать какой брать, чтоб было поменьше кода можна использовать псевдонимы.
ЗЫ Все ж неплохо указывать базу и ту ругань к-рая выдается при попытке выполнить запрос.
Отредактировано Gedeon — 28/02/2005, 14:11
|
|
telepath |
Отправлено: 28.02.2005, 18:00 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 132
|
Сорри,
используется при динамичном создании. там может быть и несколько значений
насчет таблиц да
база FB но она не ругается, а выдает просто все записи у которых одинаковые org_name и per_name и разные sumW
|
|
AVC |
Отправлено: 28.02.2005, 18:10 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
А кто будет указывать как связаны таблицы orgs, periods_det, res?
Вы получаете декартово произведение таблиц.
|
|
telepath |
Отправлено: 01.03.2005, 14:10 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 132
|
А не подскажете как это делается? В моем данном случае? По книжке что-то никак не могу разобраться |
|
AVC |
Отправлено: 01.03.2005, 15:13 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Смотря какя связь вам нужна. В простом (и самом распространенном случае) например так
Select o.org_name, p.per_name, (res.sumW+res.sumB) as SumWB
From
orgs o
,periods_det p
,res
,rec
Where 1 = 1
-- условия связи
and res.rec_id = rec.rec_id
and o.org_id = rec.org_id
and p.per_id = rec.per_id
-- условия отбора
and rec. years_num=2004
and rec.typ_id=2
and res.code_id in (40)
где-то так если у вас inner объединения.
|
|
telepath |
Отправлено: 01.03.2005, 16:53 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 132
|
А что значит
? |
|
avc* |
Отправлено: 01.03.2005, 17:29 |
|
Не зарегистрирован
|
Просто удобно комментировать "лишние" условия. Для этих же целей и запись
Select
Field1
,Field2
,Field3
From
Table1
,Table2
,Table3 |
|
telepath |
Отправлено: 01.03.2005, 17:48 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 132
|
А, понятно, большое спасибо! |
|