SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 02.07.2010 14:32:07

александр1990
Участник
Зарегистрирован: 02.07.2010
Сообщений: 2

очень нужна помощь! надо сделать запрос на mysql

ВОТ ЗАДАНИЕ.
Схема БД состоит из четырех отношений:
Company (ID_comp, name)
Trip(trip_no, ID_comp, plane, town_from, town_to, time_out, time_in)
Passenger(ID_psg, name)
Pass_in_trip(trip_no, date, ID_psg, place)
Таблица Company содержит идентификатор и название компании, осуществляющей перевозку пассажиров. Таблица Trip содержит информацию о рейсах: номер рейса, идентификатор компании, тип самолета, город отправления, город прибытия, время отправления и время прибытия. Таблица Passenger содержит идентификатор и имя пассажира. Таблица Pass_in_trip содержит информацию о полетах: номер рейса, дата вылета (день), идентификатор пассажира и место, на котором он сидел во время полета.
  Задание:
Для каждой компании подсчитать количество перевезенных пассажиров
(если они были в этом месяце) по декадам апреля 2010. При этом учитывать только дату вылета.
Вывод: название компании, количество пассажиров за каждую декаду (4
столбца).

Неактивен

 

#2 02.07.2010 16:31:18

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: очень нужна помощь! надо сделать запрос на mysql

Я всегда думал, что декада — это десятилетие big_smile

SELECT c.name, SUM(IF(pit.date BETWEEN '2010-04-01' AND '2010-04-10', 1, 0)), …
FROM Company c
JOIN Trip t USING (ID_comp)
JOIN Pass_in_trip pit USING (trip_no);

Неактивен

 

#3 02.07.2010 17:07:30

александр1990
Участник
Зарегистрирован: 02.07.2010
Сообщений: 2

Re: очень нужна помощь! надо сделать запрос на mysql

а что-то вроде этого совсем не то да?

SELECT Company.ID-comp, Count(Pass_in_trip.ID_psg) as A,
Count(Pass_in_trip.ID_psg) as B,
Count(Pass_in_trip.ID_psg) as C
FROM Company, Trip, Pass_in_trip
LEFT JOIN trip on A.trip_no = trip.trip_no WHERE (((Company.[ID-comp])=Trip.[ID-comp]) And ((Trip.Trip_no)=Pass_in_trip.Trip_no) And ((Pass_in_trip.Date) Between #1/4/2010# And #10/4/2010#))
LEFT JOIN trip on B.trip_no = trip.trip_no WHERE (((Company.[ID-comp])=Trip.[ID-comp]) And ((Trip.Trip_no)=Pass_in_trip.Trip_no) And ((Pass_in_trip.Date) Between #11/4/2010# And #20/4/2010#))
LEFT JOIN trip on C.trip_no = trip.trip_no WHERE (((Company.[ID-comp])=Trip.[ID-comp]) And ((Trip.Trip_no)=Pass_in_trip.Trip_no) And ((Pass_in_trip.Date) Between #21/4/2010# And #30/4/2010#))
GROUP BY Company.ID-comp;

Неактивен

 

#4 02.07.2010 17:15:48

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: очень нужна помощь! надо сделать запрос на mysql

FAQ #11.

По крайней мере алиасы должны быть разными, чтобы работало.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson