Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2009, 14:45   #1
span4
Пользователь
 
Регистрация: 04.04.2009
Сообщений: 33
По умолчанию помогите с задачкой

схема БД состоит из 4 отношений:

Company(ID_comp, name)
Trip(trip_no, ID_comp, plane, town_from, town_to, time_out, time_in)
Passenger(ID_psg, name)
Pas_in_trip(trip_no, date, ID_psg, place)

вывести всех пассажиров, которые за последнюю неделю воспользовались услугами не менее 2-х компаний и назвние этих компаний...
span4 вне форума Ответить с цитированием
Старый 05.04.2009, 04:45   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

а СУБД какая?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.04.2009, 11:45   #3
span4
Пользователь
 
Регистрация: 04.04.2009
Сообщений: 33
По умолчанию

interbase )
span4 вне форума Ответить с цитированием
Старый 05.04.2009, 12:08   #4
span4
Пользователь
 
Регистрация: 04.04.2009
Сообщений: 33
По умолчанию

можно в Cache... просто уловить что надо делать хочу... забыл уже все, а вспоминать лучше когда видешь решение... лучше правильное ))
span4 вне форума Ответить с цитированием
Старый 05.04.2009, 16:28   #5
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

и не забудьте мне переслать 20 баксов на пиво

Код:
select
    p.id_psg,
    p.name,
    c.id_comp,
    c.name
from
    company c,
    passenger p,
    trip t,
    pas_in_trip pit2
where 0=0
  and t.id_comp = c.id_comp
  and p.id_psg = pit2.id_psg
  and t.trip_no = pit2.trip_no
  and pit2.date>=trunc('today') - 7
  and p.id_psg in (
        select pit.id_psg
        from
            pas_in_trip pit,
            trip t
        where 0=0
          and t.trip_no = pit.trip_no
          and pit.date>=trunc('today') - 7
        group by pit.id_psg
        having count(t.id_comp)>1)
order by p.name, c.name
soleil@mmc вне форума Ответить с цитированием
Старый 06.04.2009, 18:10   #6
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

можно еще и в виде соотнесенного запроса
Код:
select
    p.id_psg,
    p.name,
    c.id_comp,
    c.name
from
    company c,
    passenger p,
    trip t,
    pas_in_trip pit2
where 0=0
  and t.id_comp = c.id_comp
  and p.id_psg = pit2.id_psg
  and t.trip_no = pit2.trip_no
  and pit2.date>=trunc('today') - 7
  and 1 < (
        select count(t.id_comp)
        from
            pas_in_trip pit,
            trip t
        where 0=0
          and t.trip_no = pit.trip_no
          and pit.date>=trunc('today') - 7
          and p.id_psg = pit.id_psg)
order by p.name, c.name
soleil@mmc вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с задачкой alex1707 SQL, базы данных 3 02.04.2009 11:16
Помогите с задачкой((( Паскалька^^ Паскаль, Turbo Pascal, PascalABC.NET 0 19.12.2008 19:28
Помогите с задачкой на С++ pymba Помощь студентам 1 07.12.2008 15:07
Помогите с задачкой Saniok Помощь студентам 4 29.09.2007 20:34
ПОМОГИТЕ С ЗАДАЧКОЙ!!!! Solny6ko YasnoE Помощь студентам 6 22.06.2007 09:09