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

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

Sql


gost ©   (2006-06-23 15:09:00) 

Помогите, пожалуйста, написать sql запрос. 3 таблицы:
1. RA (рекламные агентства), в ней находится поля RKod, RName.
2. VRA (виды деятельности рекламного агентства), в ней поля - VRAKod, VRAKodRA, VRAKodVD.
3. WidD (виды деятельности): WKod, WName.
Нужно получить данные по рекламным агентствам, которые занимаются несколькими видами деятельности одновременно.
Например, 1 рекламное агентство занимается и телевидением, и газетами, и радио. Нужно выбрать такое агентство.
Для определения видов деятельности, по которым нужно найти рекламные агентства, создаю таблицу Wid с полем f1, в котором хранятся коды видов деятельности, по которым выбираются рек.агентства.
Писала такой запрос: select RName from RA, VRA, WidD where RKOd=VRAKOdRA and VRAKodVD = all (select f1 from Wid) and VRAKodVD=WKod
Естественно, что такой запрос не работает.
Например, в таблице VRA записи:
VRAKod VRAKodRA VRAKodVD
1          1             1
2          1             2  
3          1             3
4          2             1
5          3             2
6          3             3
Пользователь хочет выбрать рекламные агентства, у которых вид деятельности (ВД) 1 и 2.
Он должен получить отчет - 1.
В другой раз хочет выбрать РА, у которых ВД - 2 и 3.
Получает  - 1, 3.
Как составить такой запрос?


gost   (2006-06-23 15:56:00) [1]

Спасибо решение уже найдено.
select ra.rname from ra, vra, widd
where ra.rkod = vra.vrakodra and vra.vrakodvd = widd.wkod and
 wkod in (select f1 from wid)
group by ra.rname
having count (vra.vrakodra) > 1


ANB   (2006-06-23 15:33:00) [2]

Не заметил, уточняю :
select * from RA where RA.RKod in (select VRA.VRAKodRA from VRA, WidD where VRA.VRAKodVD = WidD.F1)


Sergey13   (2006-06-23 15:32:00) [3]

А зачем топики то плодить?
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1151045283&n=18


ANB   (2006-06-23 15:22:00) [4]

select * from RA where RA.RKod in (select VRA.VRAKodRA from VRA where VRA.VRAKodVD in (2, 3))


Наверх

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