powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Sql. Выборка от и до
13 сообщений из 13, страница 1 из 1
Sql. Выборка от и до
    #38594115
Stalin45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, помогите пожалуйста, как написать запрос на выборку тех строк, которые лежат между 2 строками, включая их?

Конкретная задача следующая:
Клиент вводит 2 стандии (от и до) и дату, необходимо вывести те строки из Destination, которые входят в этот интервал станций в определенный день.
Вот схема:


Заранее очень благодарен!
...
Рейтинг: 0 / 0
Sql. Выборка от и до
    #38594130
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stalin45,

т.е. неважно, какой это поезд/маршрут и т.д.? Ну тогда тупо
Код: sql
1.
... where time between :time1 and :time2
...
Рейтинг: 0 / 0
Sql. Выборка от и до
    #38594271
Stalin45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirStalin45,

т.е. неважно, какой это поезд/маршрут и т.д.? Ну тогда тупо
Код: sql
1.
... where time between :time1 and :time2



А between является операцией включающей time1 и time2?

Честно говоря, мне время ограничивать не нужно, нужно вывести
destinations.*, where Station.name = (строки между и включающие Station.name = name1 and Station.name = name2) and Time_table.date = 20.02.2012

Был бы очень благодарен, если бы кто-нибудь помог разобраться с выборкой Station.name (а уж с датой, временем и тд разберусь)
...
Рейтинг: 0 / 0
Sql. Выборка от и до
    #38594278
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stalin45А between является операцией включающей time1 и time2? да
...
Рейтинг: 0 / 0
Sql. Выборка от и до
    #38594307
Stalin45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

Хм, но данный оператор сравнивает значения полей, а мне необходим такой, который бы сравнивал порядок следования полей в таблице.

P.S. за статью спасибо!
...
Рейтинг: 0 / 0
Sql. Выборка от и до
    #38594346
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stalin45Хм, но данный оператор сравнивает значения полей, а мне необходим такой, который бы сравнивал порядок следования полей в таблице .Тогдя ЯННП. Показывайте тестовые данные и желаемый результат.
...
Рейтинг: 0 / 0
Sql. Выборка от и до
    #38594381
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stalin45порядок следования полей в таблице.А это вообще что?
...
Рейтинг: 0 / 0
Sql. Выборка от и до
    #38594516
Stalin45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения, если непонятно объяснил!

Вот, например, таблица Stations:



Как вывести строки между st2 и st4? Т.е 3 строки (st2, st3, st4)?

Или может так в SQL нельзя и нужно делать полную выборку таблицы, а в контроллере уже выхватывать нужные строки? (но а если у нас гигабайтные таблицы... тогда и RAM не хватит, и скорость пострадает)
...
Рейтинг: 0 / 0
Sql. Выборка от и до
    #38594518
Stalin45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извините за мультипост, вот картинка
...
Рейтинг: 0 / 0
Sql. Выборка от и до
    #38594529
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stalin45Как вывести строки между st2 и st4? Т.е 3 строки (st2, st3, st4)?Что значит "между"? В таблице нет порядка записей. То, что "селект *" раз за разом выдаёт вам записи в каком-то одном порядке, ещё не значит, что они там "хранятся" именно в таком "порядке". Если вы хотите выбрать все записи "между А и Б", вы должны сначала определить отношение порядка на множестве записей :) - простыми словами, описать, каким образом серверу определять, находится запись N между А и Б (т.е. она "больше" А, но "меньше" Б) или нет. Результаты "селект *" такое отношение не задают :)

Ещё раз: таблица - это куча. "Изначального" порядка в ней нет, вы должны задать его сами. Например, можно сказать, что порядок задаётся сравнением значений в поле name, тогда запрос получится таким:
Код: sql
1.
2.
<...>
where name between 'st2' and 'st4'
...
Рейтинг: 0 / 0
Sql. Выборка от и до
    #38594532
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirВ таблице нет порядка записейважное уточнение: не в вашей конкретной таблице, а вообще в любой таблице
...
Рейтинг: 0 / 0
Sql. Выборка от и до
    #38594565
Stalin45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirStalin45Как вывести строки между st2 и st4? Т.е 3 строки (st2, st3, st4)?Что значит "между"? В таблице нет порядка записей. То, что "селект *" раз за разом выдаёт вам записи в каком-то одном порядке, ещё не значит, что они там "хранятся" именно в таком "порядке". Если вы хотите выбрать все записи "между А и Б", вы должны сначала определить отношение порядка на множестве записей :) - простыми словами, описать, каким образом серверу определять, находится запись N между А и Б (т.е. она "больше" А, но "меньше" Б) или нет. Результаты "селект *" такое отношение не задают :)

Ещё раз: таблица - это куча. "Изначального" порядка в ней нет, вы должны задать его сами. Например, можно сказать, что порядок задаётся сравнением значений в поле name, тогда запрос получится таким:
Код: sql
1.
2.
<...>
where name between 'st2' and 'st4'


Ох, надо же, не знал, спасибо большое!
Теперь мне все ясно...
То есть, так как у меня в маршрут станции добавляются последовательно и одной транзакцией, то и id у них будут одной последовательностью, поэтому можно так:
Select * from Stations where id between (Select id from Stations, where name = 'st2') and (Select id from Stations, where name = 'st4')
?
...
Рейтинг: 0 / 0
Sql. Выборка от и до
    #38594665
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stalin45То есть, так как у меня в маршрут станции добавляются последовательно и одной транзакцией, то и id у них будут одной последовательностью, поэтому можно так:Не советую. Любые вещи, не описанные явно, могут быть "как угодно". В частности, даже добавление записей в одной транзакции не гарантирует пропусков значений, а потом кто-то руками заполнит "пропуски" - вот будет тебе щастьице... и не говори, что такого не может быть - см. закон Мерфи.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Sql. Выборка от и до
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]