Имя: Пароль:
1C
 
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 и она текст