|
SQL запрос на выборку элемента и следующего за ним. | ☑ | ||
---|---|---|---|---|
0
Coldboy
18.07.13
✎
12:29
|
Здравствуйте. Собственно такой SQL запрос
SELECT v1,v2,v3 FROM tables WHERE time_start <= '$tekdata' AND time_end >= '$tekdata' AND test = 'id' В этом запросе я выбираю запись по данным параметрам мне нужна запись с тем же id, но следующая после данной записи. Как это можно сделать? |
|||
1
Лефмихалыч
18.07.13
✎
12:32
|
top 2
order by |
|||
2
Coldboy
18.07.13
✎
12:34
|
top 2 это как ? order by зачем?
|
|||
3
МихаилМ
18.07.13
✎
12:36
|
My SQL ?
|
|||
4
упс
18.07.13
✎
12:36
|
а "следующая после данной записи" - это как?
|
|||
5
mikecool
18.07.13
✎
12:37
|
(0) а ид не уникальный?
|
|||
6
Ёпрст
18.07.13
✎
12:38
|
SELECT v1,v2,v3
(select min(v1) from tables where time_start <= '$tekdata' AND time_end >= '$tekdata' AND test > 'id' )as nextv1 -- и т.д для nextv2,nextv3 FROM tables WHERE time_start <= '$tekdata' AND time_end >= '$tekdata' AND test = 'id' |
|||
7
Coldboy
18.07.13
✎
12:41
|
(4) ну в таблице идет запись, и следующая за ней.
id уникален. это грубо говоря какой-то параметр. |
|||
8
rs_trade
18.07.13
✎
12:42
|
(7) а следующая, это как? физически на диске лежит в соседнем секторе?
|
|||
9
rs_trade
18.07.13
✎
12:44
|
следующая запись, не может быть такого критерия. следующая по времени, дате чему то еще должна быть.
|
|||
10
mikecool
18.07.13
✎
12:46
|
(7) так и выбирай - твой запрос + union тоже самое where id = id из первого запроса + 1
|
|||
11
Coldboy
18.07.13
✎
12:46
|
да My SQL.
ну смотрите идут записи id datatime name guid 1 18.07.2013 12:45 test1 12312 1 18.07.2013 13:54 test2 12313 1 18.07.2013 16:43 test3 12314 вот хочу чтобы вышло в результате первые 2 строчки. guid немного смущает, ибо может залететь другой id с guidom Допустим 12313. |
|||
12
Coldboy
18.07.13
✎
12:47
|
(10) тоже так думал, но думал может есть проще ) и опять же нельзя на guid упираться.
|
|||
13
rs_trade
18.07.13
✎
12:48
|
(11) select top 2 с отбором по гуиду и сортировкой по дате времени
|
|||
14
Coldboy
18.07.13
✎
12:49
|
(13) не понимаю как примерно должен выглядеть запрос.
|
|||
15
rs_trade
18.07.13
✎
12:52
|
(14)
SELECT v1,v2,v3 FROM tables WHERE time_start <= '$tekdata' AND time_end >= '$tekdata' AND test = 'id' ORDER BY datatime LIMIT 2 на mySQL это будет LIMIT |
|||
16
Coldboy
18.07.13
✎
12:54
|
(15) тока в такой отбор попадет 1 запись, ибо starttime и endtime не пересекающиейся промежутки. грубо говоря эхто программы передач.
|
|||
17
rs_trade
18.07.13
✎
12:56
|
(16) может вообще убрать это условие? без него в отбор попадет 2 записи с наибольшей или наименьшей датой, зависит от порядка сортировки. ну и конечно только по выбранному ид.
|
|||
18
BigHarry
18.07.13
✎
14:24
|
Я бы UNION-ом попытался бы подтянуть следующие записи, типа так:
SELECT v1,v2,v3 FROM tables WHERE time_start <= '$tekdata' AND time_end >= '$tekdata' AND test = 'id' UNION SELECT v1,v2,v3 FROM tables WHERE time_end тыры-пыры-условие. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |