|
Execute упорядочивание при запросе к mysql |
☑ |
0
slaaay
13.02.15
✎
13:03
|
Делаю запрос к mysql с полями содержащими id и время. Так вот как мне упорядочить записи по времени при запросе или уже делать это в 1с? Т.е. например идет такая вещь:
id time
1 10:40
1 11:30
1 17:15
1 19:20
1 8:59
а мне надо чтобы 8:59 было вначале. для того чтобы сработал метод group. Т.е. чтобы осталось последнее и первое время.
|
|
1
igork1966
13.02.15
✎
13:04
|
(0) для ответа на вопрос нужно сначала знать тип данных поля time
|
|
2
slaaay
13.02.15
✎
13:05
|
Соединение.Execute("select emphint, ord(substr(logdata,5,1)) as dir, emphint,time(min(logtime)) as intime, time(max(logtime)) as offtime from logs group by emphint")
делаю как то так оставляет первое время 11:30 а должен 9:04
|
|
3
igork1966
13.02.15
✎
13:05
|
(1) + если текст, то как вариант можно выровнять нулем слева на sql
|
|
4
slaaay
13.02.15
✎
13:05
|
(1) дата я так понимаю. не силен в mysql
|
|
5
igork1966
13.02.15
✎
13:06
|
(2) ты уверен в порядке параметров substr ?
|
|
6
igork1966
13.02.15
✎
13:07
|
(2) + из твоего запроса неясно какой тип данных logdata
|
|
7
slaaay
13.02.15
✎
13:08
|
(4) блин если дата то почему min и max как то странно работает
|
|
8
slaaay
13.02.15
✎
13:09
|
(6) не силен в mysql эту строчку скопировал с источника одного. и что означает ord(substr(logdata,5,1)) as dir не понимаю
|
|
9
igork1966
13.02.15
✎
13:11
|
(8) вообще запрос какой-то странный.... несоблюдается требование о включении полей в группировку, если они есть в списке полей в без агрегата
|
|
10
igork1966
13.02.15
✎
13:13
|
integer ORD(str string)
В случае, если первый левый символ строки str является многобайтовым, возвращает его код в формате: ((первый байт ASCII- код)*256+(второй байт ASCII -код))[*256+третий байт ASCII -код...].
Если первый левый символ строки str не является многобайтовым, то действие аналогично действию функции ASCII() - возвращает ASCII-код первого левого символа строки str.
Примеры:
mysql> select ORD('2');
-> 50
См. также ASCII().
|
|
11
igork1966
13.02.15
✎
13:15
|
select emphint, ord(substr(logdata,5,1)) as dir, emphint,time(min(logtime)) as intime, time(max(logtime)) as offtime from logs group by emphint, ord(substr(logdata,5,1))
|
|
12
igork1966
13.02.15
✎
13:16
|
(11) + есть вероятность что logtime не датавремя а текст
|
|
13
igork1966
13.02.15
✎
13:18
|
select emphint, ord(substr(logdata,5,1)) as dir, emphint,time(min(right('00'+logtime, 5))) as intime, time(max(right('00'+logtime, 5))) as offtime from logs group by emphint, ord(substr(logdata,5,1))
|
|
14
igork1966
13.02.15
✎
13:19
|
(13) Это если ты в (0) во второй колонке выводишь logtime и она текст
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший