| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Составление SQL-запросов > SQL запросы(SELECT,DELETE) в БД,возникли трудности |
| Автор: nzvacarme 23.12.2013, 23:58 |
| Здравствуйте, мне нужно сделать следующие запросы в базе данных "Автовокзал" (схема во вложениях): На 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) совсем не представляю, как делать... Вроде выглядят запросы достаточно просто, а как начнешь с нуля ковыряться, так прям то кочка, то пенек, всё время спотыкаюсь. Помогите, пожалуйста, подскажите...! |
| Автор: Агрох 24.12.2013, 13:55 |
| По 1. Да, вам надо подсчитать количество пассажиров на маршруте в указанное время и вычесть его из количества мест. Функция http://msdn.microsoft.com/ru-ru/library/ms175997.aspx. По 3. У вас же билет имеет полный набор данных для однозначной идентификации. - номер места, дата и маршрут. По ним и удаляйте. |