|
|
|
Sql. Выборка от и до
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, помогите пожалуйста, как написать запрос на выборку тех строк, которые лежат между 2 строками, включая их? Конкретная задача следующая: Клиент вводит 2 стандии (от и до) и дату, необходимо вывести те строки из Destination, которые входят в этот интервал станций в определенный день. Вот схема: Заранее очень благодарен! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2014, 01:26:07 |
|
||
|
Sql. Выборка от и до
|
|||
|---|---|---|---|
|
#18+
Stalin45, т.е. неважно, какой это поезд/маршрут и т.д.? Ну тогда тупо Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2014, 05:18:36 |
|
||
|
Sql. Выборка от и до
|
|||
|---|---|---|---|
|
#18+
tanglirStalin45, т.е. неважно, какой это поезд/маршрут и т.д.? Ну тогда тупо Код: sql 1. А between является операцией включающей time1 и time2? Честно говоря, мне время ограничивать не нужно, нужно вывести destinations.*, where Station.name = (строки между и включающие Station.name = name1 and Station.name = name2) and Time_table.date = 20.02.2012 Был бы очень благодарен, если бы кто-нибудь помог разобраться с выборкой Station.name (а уж с датой, временем и тд разберусь) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2014, 10:54:34 |
|
||
|
Sql. Выборка от и до
|
|||
|---|---|---|---|
|
#18+
Stalin45А between является операцией включающей time1 и time2? да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2014, 10:57:51 |
|
||
|
Sql. Выборка от и до
|
|||
|---|---|---|---|
|
#18+
tanglir, Хм, но данный оператор сравнивает значения полей, а мне необходим такой, который бы сравнивал порядок следования полей в таблице. P.S. за статью спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2014, 11:12:14 |
|
||
|
Sql. Выборка от и до
|
|||
|---|---|---|---|
|
#18+
Stalin45Хм, но данный оператор сравнивает значения полей, а мне необходим такой, который бы сравнивал порядок следования полей в таблице .Тогдя ЯННП. Показывайте тестовые данные и желаемый результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2014, 11:47:50 |
|
||
|
Sql. Выборка от и до
|
|||
|---|---|---|---|
|
#18+
Stalin45порядок следования полей в таблице.А это вообще что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2014, 12:24:09 |
|
||
|
Sql. Выборка от и до
|
|||
|---|---|---|---|
|
#18+
Прошу прощения, если непонятно объяснил! Вот, например, таблица Stations: Как вывести строки между st2 и st4? Т.е 3 строки (st2, st3, st4)? Или может так в SQL нельзя и нужно делать полную выборку таблицы, а в контроллере уже выхватывать нужные строки? (но а если у нас гигабайтные таблицы... тогда и RAM не хватит, и скорость пострадает) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2014, 13:40:55 |
|
||
|
Sql. Выборка от и до
|
|||
|---|---|---|---|
|
#18+
Stalin45Как вывести строки между st2 и st4? Т.е 3 строки (st2, st3, st4)?Что значит "между"? В таблице нет порядка записей. То, что "селект *" раз за разом выдаёт вам записи в каком-то одном порядке, ещё не значит, что они там "хранятся" именно в таком "порядке". Если вы хотите выбрать все записи "между А и Б", вы должны сначала определить отношение порядка на множестве записей :) - простыми словами, описать, каким образом серверу определять, находится запись N между А и Б (т.е. она "больше" А, но "меньше" Б) или нет. Результаты "селект *" такое отношение не задают :) Ещё раз: таблица - это куча. "Изначального" порядка в ней нет, вы должны задать его сами. Например, можно сказать, что порядок задаётся сравнением значений в поле name, тогда запрос получится таким: Код: sql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2014, 13:48:04 |
|
||
|
Sql. Выборка от и до
|
|||
|---|---|---|---|
|
#18+
tanglirВ таблице нет порядка записейважное уточнение: не в вашей конкретной таблице, а вообще в любой таблице ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2014, 13:48:57 |
|
||
|
Sql. Выборка от и до
|
|||
|---|---|---|---|
|
#18+
tanglirStalin45Как вывести строки между st2 и st4? Т.е 3 строки (st2, st3, st4)?Что значит "между"? В таблице нет порядка записей. То, что "селект *" раз за разом выдаёт вам записи в каком-то одном порядке, ещё не значит, что они там "хранятся" именно в таком "порядке". Если вы хотите выбрать все записи "между А и Б", вы должны сначала определить отношение порядка на множестве записей :) - простыми словами, описать, каким образом серверу определять, находится запись N между А и Б (т.е. она "больше" А, но "меньше" Б) или нет. Результаты "селект *" такое отношение не задают :) Ещё раз: таблица - это куча. "Изначального" порядка в ней нет, вы должны задать его сами. Например, можно сказать, что порядок задаётся сравнением значений в поле name, тогда запрос получится таким: Код: sql 1. 2. Ох, надо же, не знал, спасибо большое! Теперь мне все ясно... То есть, так как у меня в маршрут станции добавляются последовательно и одной транзакцией, то и id у них будут одной последовательностью, поэтому можно так: Select * from Stations where id between (Select id from Stations, where name = 'st2') and (Select id from Stations, where name = 'st4') ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2014, 14:00:03 |
|
||
|
Sql. Выборка от и до
|
|||
|---|---|---|---|
|
#18+
Stalin45То есть, так как у меня в маршрут станции добавляются последовательно и одной транзакцией, то и id у них будут одной последовательностью, поэтому можно так:Не советую. Любые вещи, не описанные явно, могут быть "как угодно". В частности, даже добавление записей в одной транзакции не гарантирует пропусков значений, а потом кто-то руками заполнит "пропуски" - вот будет тебе щастьице... и не говори, что такого не может быть - см. закон Мерфи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2014, 14:42:55 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38594115&tid=1835083]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 351ms |

| 0 / 0 |
