Официальный сайт студ.городка НГТУ
Программирование и БД » mySQL 

#1  03.12.10 01:19

mySQL

Нужно найти все билеты с смаой большой разницей времени вылета и времени прибытия, для заданной даты вылета(ввод даты) любого аэропорта назначения.
есть table2 с полями
-номер билета
-стоимость
-id
и table3 с полями
-дата вылета
-время вылета-время прибытия
-аэропорт
-id
вот так находится наибольшая разница

Код::

SELECT  CAST(max(table3.in-table3.out) as Integer) ;
FROM table3

Пробую вот так, но результаты запроса неверные, потому что выбирается только один результат максимальный.

Код::

SELECT  * FROM table2, table3;
where CAST((table3.in-table3.out) as integer)=(SELECT  CAST(max(table3.in-table3.out) as Integer) ;
FROM  table3);
AND table2.id_b=table3.id_b;
and table3.data = CAST(thisform.pageframe1.page5.combo1.Value as date)

Offline

#2  03.12.10 01:48

Re: mySQL

все сам вроде разобрался, вроде пашет

Код::

SELECT  * FROM table2, table3;
where CAST((table3.in-table3.out) as integer)=(SELECT  CAST(max(table3.in-table3.out) as Integer) ;
FROM  table3;
WHERE table3.data = CAST(thisform.pageframe1.page5.combo1.Value as date));
AND table2.id_b=table3.id_b;
AND table3.data = CAST(thisform.pageframe1.page5.combo1.Value as date)

Исправлено Tinkoff (03.12.10 01:48)

Offline

#3  03.12.10 16:39

Re: mySQL

как-то коряво...
лучше ввести избыточность в table3 и добавить поле flytime, которое обновлять при изменении table3.in и table3.out... либо заменить out на flytime, а out высчитывать при выборке... тогда будет имхо проще... к тому же смотри какой косяк... допустим дата вылета тебе известна... время вылета пусть будет 23-40, а время прибытия 4-40... какой ты получишь результат при CAST((table3.in-table3.out) as integer)? и почему ты вычитаешь из времени вылета время прибытия, а не наоборот?

Offline

#4  03.12.10 16:47

Re: mySQL

и какой тайный смысл разбивать фактически одну таблицу на две в связе 1:1?

Offline

#5  03.12.10 16:53

Re: mySQL

кстати, твой первый вариант больше похож на правду, только нет закрывающей скобки после "FROM  table3"

Offline

#6  03.12.10 18:22

$up
Профиль

Re: mySQL

Jaguar написал(а):

время вылета пусть будет 23-40, а время прибытия 4-40... какой ты получишь результат при CAST((table3.in-table3.out) as integer)

время обычно содержит в себе и дату, так что разница будет положительное число (если я понял твои опасения)

Jaguar написал(а):

(table3.in-table3.out) as integer)? и почему ты вычитаешь из времени вылета время прибытия, а не наоборот?

table3.in - время прибытия
table3.out - время вылета

Offline

#7  06.12.10 12:39

Re: mySQL

$up написал(а):

table3.out - время вылета

ну, а за каким бесом тогда есть отдельное поле дата вылета, если

$up написал(а):

время обычно содержит в себе и дату

Offline

#8  06.12.10 13:06

$up
Профиль

Re: mySQL

Jaguar написал(а):

ну, а за каким бесом тогда есть отдельное поле дата вылета

просто задание составлял человек, который не очень разбирается в базах данных.
Или для того, чтобы студенту было проще составить запрос.

Исправлено $up (06.12.10 13:09)

Offline

#9  06.12.10 21:08

Re: mySQL

ну задание такое, чтобы были отдельно поля дата вылета, время вылета, время прибытия, т.к. в мускуле нет типа "время" а только datatime то получается что информация дублируется. ТО же самое и разбиение на 3 таблицы, просто преподаватель требует чтобы их было несколько. Хотя будь моя воля все бы в одной сделал. Или двух.

Исправлено Tinkoff (06.12.10 21:09)

Offline

#10  06.12.10 23:21

Re: mySQL

Tinkoff написал(а):

ТО же самое и разбиение на 3 таблицы, просто преподаватель требует чтобы их было несколько.

ну, преподаватель не уточняет же что и куда... наверняка предполагалось иметь просто отдельный справочник аэропортов, а ты решил разбить информацию совершенно нелогично и бессмысленно...

Offline

#11  07.12.10 03:30

Re: mySQL

Jaguar, тоже верно, на самом деле я бы сделал две таблицы, одна инфа о пассажире, другая о билете.

Offline

Программирование и БД » mySQL 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.048 сек.
Выполнено 11 запросов.