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

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

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2011, 09:25   #1
alezha
Форумчанин
 
Регистрация: 16.04.2011
Сообщений: 126
Сообщение Запросы(Проверьте правильность)

Если неправильно, то не могли бы вы исправить, или дать ссылку на похожее или...
Код:
1. Найти самолеты, на которых не мог летать конкретный пассажир.
SELECT A.IdPlane
FROM Flight A
WHERE A.IdFlight in (SELECT Passenger.IdFlight FROM Passenger, Flight A WHERE ((Passenger.IdFlight><A.IdFlight) AND (Passenger.[IdPassport]=”KH1111111”));
2. Найти самого летающего пассажира по числу полетов.
SELECT TOP 1 COUNT(IdPassport) AS VALUECOUNT, IdPassport
FROM Passenger
GROUP BY IdPassport
ORDER BY VALUECOUNT  desc;
3. Для каждого аэропорта посчитать %  пассажиров, которые с ним связаны, и число разных моделей самолета, с которым они связаны.
SELECT A.IdAiroport, COUNT(*)/COUNT(IdPassport) AS Procent, B.IdPlane, COUNT(*) AS ValuePlane
FROM Passenger A, Plane B
WHERE A. IdAiroport =B.IdAiroport
GROUP BY A.IdAiroport,B.IdPlane;
4. Пассажиры, которые летали один раз.
SELECT IdPassport
FROM Passenger
GROUP BY IdPassport
HAVING COUNT([IdPassport])=1;

Последний раз редактировалось alezha; 16.05.2011 в 19:09.
alezha вне форума Ответить с цитированием
Старый 16.05.2011, 10:15   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Вообще-то, неплохо бы структуры приводить! А то гадать приходится!

Задания 1 и 3, 4 у Вас точно неправильно сделаны.

2, на мой взгляд правильно (если только устроит в качестве ответа IDпаспорта пассажира)

СУБД то какая? MS SQL ? Вложенные запросы разрешены?

Задача 4. у Вас почти правильно.
надо так (опять же, если в качестве ответ достаточно ID паспорта пассажира!):
Код:
4. Пассажиры, которые летали один раз.
SELECT IdPassport
FROM Passenger
GROUP BY IdPassport
HAVING COUNT([IdPassport])=1;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.05.2011, 15:01   #3
alezha
Форумчанин
 
Регистрация: 16.04.2011
Сообщений: 126
По умолчанию

вот реляционная схема

Access. вложенные разрешены
Я немного изменил 1-ый,3-ий, но думаю все равно неправильно
Вопрос: значения B.[IdFlight] и B.[IdPlane] в отношении находятся в одной строчке?

Последний раз редактировалось alezha; 16.05.2011 в 16:41.
alezha вне форума Ответить с цитированием
Старый 16.05.2011, 19:13   #4
alezha
Форумчанин
 
Регистрация: 16.04.2011
Сообщений: 126
По умолчанию

Осталось это проверить.
Код:
1. Найти самолеты, на которых не мог летать конкретный пассажир.
SELECT A.IdPlane
FROM Flight A
WHERE A.IdFlight in (SELECT Passenger.IdFlight FROM Passenger, Flight A WHERE ((Passenger.IdFlight><A.IdFlight) AND (Passenger.[IdPassport]=”KH1111111”));
3. Для каждого аэропорта посчитать %  пассажиров, которые с ним связаны, и число разных моделей самолета, с которым они связаны.
SELECT A.IdAiroport, COUNT(*)/COUNT(IdPassport) AS Procent, B.IdPlane, COUNT(*) AS ValuePlane
FROM Passenger A, Plane B
WHERE A. IdAiroport =B.IdAiroport
GROUP BY A.IdAiroport,B.IdPlane;
alezha вне форума Ответить с цитированием
Старый 16.05.2011, 21:28   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1.
"не мог летать" или "не летал" ?! Это разные вещи...

Код:
-- Найти самолеты, на которых не летал конкретный пассажир.
select * from Flight A
  where A.IdFlight not in 
     (select B.IdFlight  from Passenger B
         where B.[IdPassport]=”KH1111111”)
примечание. вместо NOT IN можно использовать конструкцию NOT EXISTS ...
Но мне ID in (или not in ) всегда нравились больше.. Не знаю, даже почему..

3-й запрос похож на правильный (по крайней мере в синтаксисе я ошибок (кроме пробелов не нужных) не вижу.
А вот с логикой - правильно/нет, я не знаю. Лень думать.. Да и мозги ваааще не хотят работать в конце дня.. сорри...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверьте на правильность плиз Agent[PNZ] Помощь студентам 3 11.06.2014 19:50
проверьте правильность. helpme1 Общие вопросы C/C++ 3 23.11.2010 17:23
Проверьте на правильность!! Dawystrik Общие вопросы Delphi 2 21.03.2009 21:04
Проверьте правильность пожалуйста Анжелика Помощь студентам 17 11.01.2009 00:28
Проверьте правильность Аленушка Помощь студентам 6 07.01.2009 17:07