Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SQL запросы(SELECT,DELETE) в БД,возникли трудности, 3 запроса в БД "Автовокзал", помогите... 
:(
    Опции темы
nzvacarme
Дата 23.12.2013, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 23.12.2013

Репутация: нет
Всего: нет



Здравствуйте, мне нужно сделать следующие запросы в базе данных "Автовокзал" (схема во вложениях):

На Select:
1) Для каждого отправляющегося сегодня автобуса определить количество свободных мест в нем.
2) Пассажиры, которые всегда ездят до одной и той же остановки.

На Delete:
3) Пассажир Иванов вернул билет до Тихвина, датированный конкретным числом (произвести удаление билета из базы данных)

По *1) у меня разве что получилось выбрать просто кол-во мест в автобусе, едущем "сегодня" (если вписывать дату в запрос и если в эту дату действительно имеется маршрут), примерно так это выглядит:

Select [Kol_mest], Nazv_tipa from Tip_avtobusa where Nazv_tipa in
(Select Nazv_tipa from Avtobusy where N_avt in
(Select N_avt from Otpravlenie where Dt_otprav='2013-12-24'))

Но в задании количество Свободных мест... т.е. надо вычесть кол-во уже купленных билетов? Как это осуществить? Подсчитать строки (с условием, где будет уточнено то, по какому маршруту едет) в таблице, где имеются Id покупателей этих самых билетов, а потом вычесть их из общего количества мест в автобусе?

В *3) надо видимо как-то связать в двух таблицах коды пассажира, выбрать фамилию в "Пассажирах", а в "Билетах" - Пункт отправления и Дату отправления? Не до конца еще изучен синтаксис...
Вышло пока только удалить билет на дату до конкретного города:

Delete from Bilety
Where P_pribyt='Тихвин' and Dt_otprav='2013-12-23'

Но что если еще кто-то едет туда же? Тогда все их билеты удалятся... Как связать этот запрос с таблицей "Пассажиры"?

А *2) совсем не представляю, как делать...

Вроде выглядят запросы достаточно просто, а как начнешь с нуля ковыряться, так прям то кочка, то пенек, всё время спотыкаюсь.

Помогите, пожалуйста, подскажите...!

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  Без_имени_1.jpg 173,10 Kb
PM MAIL   Вверх
Агрох
Дата 24.12.2013, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 176
Регистрация: 6.4.2013
Где: Москва

Репутация: нет
Всего: 6



По 1. Да, вам надо подсчитать количество пассажиров на маршруте в указанное время и вычесть его из количества мест. Функция COUNT.

По 3. У вас же билет имеет полный набор данных для однозначной идентификации. - номер места, дата и маршрут. По ним и удаляйте.
--------------------
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
registerconfirm
Дата 24.12.2013, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 6.7.2012
Где: Липка

Репутация: нет
Всего: нет



Цитата(nzvacarme @  23.12.2013,  23:58 Найти цитируемый пост)
Но в задании количество Свободных мест... т.е. надо вычесть кол-во уже купленных билетов? Как это осуществить? Подсчитать строки (с условием, где будет уточнено то, по какому маршруту едет) в таблице, где имеются Id покупателей этих самых билетов, а потом вычесть их из общего количества мест в автобусе?


Примерно должна получиться такая конструкция:


select sum(t1.s1)-sum(t1.s2), t1.n
from
(
select sum(количество мест) as s1, 0 as s2, номер автобуса as n
....
union
select 0, count(количество билетов), номер автобуса
...
order by n
)  t1
group by t1.n

Вот не помню можно использовать order by здесь или нет.
PS: схема с названиями на русском языке - это АдЪ smile


Это сообщение отредактировал(а) registerconfirm - 24.12.2013, 21:29
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.1042 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.