#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
#6 03.12.10 18:22
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
#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

