| imho.ws |
![]() |
|
|
|
# 1 |
|
Guest
Сообщения: n/a
|
Сортировка [php]
Как сделать такую сортировку на mysql: данные сортируются по времени, и одновременно есть поле optional в котором стоят значения 0 и 1, 0(main) 1(optional) время у них одинаковое, надо сделать так чтобы main всегда стоял перед optional, как это сделать?
cid | name | optional 0 | 10:00 Dcba | 0 1 | 10:00 Abcd | 1 2 | Abcd | 0 так же есть поля без времени (Abcd) они должны быть в самом начале, в каком порядке не важно, как все это организовать? Последний раз редактировалось _ARMAGEDDON_; 07.06.2004 в 11:37. |
|
|
# 3 |
|
Guest
Сообщения: n/a
|
нет, так optional получается в самом конце
а надо чтобы все сортировалось по времени и если время одинаковое, то optional должен идти после main, т.е должно получиться чтото (main) 09:00 чтото (main) 10:00 чтото (main) 10:00 чтото (optional) 12:00 чтото (main) 14:00 чтото (main) Последний раз редактировалось _ARMAGEDDON_; 07.06.2004 в 13:41. |
|
|
# 8 |
|
сошел
Регистрация: 03.06.2002
Сообщения: 662
![]() ![]() ![]() ![]() |
странно у меня работает
например: Код:
mysql> select id,date,money from bicbets order by date,money; +------+----------+-------+ | id | date | money | +------+----------+-------+ | 8239 | 20040530 | 2 | | 8240 | 20040530 | 2 | | 8241 | 20040530 | 3 | | 8243 | 20040530 | 5 | | 8242 | 20040530 | 6 | | 8244 | 20040530 | 9 | | 8245 | 20040601 | 54 | | 8246 | 20040604 | 5 | +------+----------+-------+ |
|
|
|
|
# 9 |
|
Newbie
Регистрация: 11.04.2003
Адрес: Мытищи
Сообщения: 26
![]() |
select * from w_list where сid='$info[сid]' order by name,optional asc
Вот так это будет. Только поля без цифр будут в конце. А если сделать так order by name desc,optional asc, то они будут в начале, но остальные данные отсортируются по убыванию. Так что если обязательно надо сортировать по возрастанию даты, то лучше сделать два запроса, сначала достать без даты, а потом остальное. |
|
|
|
|
# 12 |
|
Guest
Сообщения: n/a
|
есть поля
12:00 3чтото | 0 10:00 2чтото | 0 чтото | 0 10:00 1чтото | 1 при запросе select * from w_list order by name получается 10:00 1чтото | 1 10:00 2чтото | 0 12:00 3чтото | 0 чтото | 0 а нужно чтото | 0 10:00 2чтото | 0 10:00 1чтото | 1 12:00 3чтото | 0 добавление optional desc (asc) ничего не меняет... |
|
|
# 13 |
|
Newbie
Регистрация: 11.04.2003
Адрес: Мытищи
Сообщения: 26
![]() |
optional asc сортирует по возрастанию т.е. первым будут данные где optional 0 потом 1. Я уже написал что если хочешь чтобы сначала были данные без даты, то либо делаешь два запроса, либо(если все равно как сортировать дату по возрастанию или по убыванию) добавляешь к order by name desc данные без даты будут вначале, а потом пойдут по убыванию с датой.
|
|
|
|
|
# 15 |
|
Newbie
Регистрация: 11.04.2003
Адрес: Мытищи
Сообщения: 26
![]() |
Как это ничего не меняет?
SQL-запрос: SELECT * FROM `test` WHERE 1 ORDER BY name, optional ASC; cid name optional 0 10:00 fghjkhg 0 1 10:00 fghjkhg 1 0 11:00 0 0 fef 0 Если будет optional desc будет вот так cid name optional 0 10:00 fghjkhg 1 1 10:00 fghjkhg 0 0 11:00 0 0 fef 0 А чтобы получить данные отсортированные как ты хочешь надо два запроса прогнать. Первый что-то типа: SELECT * FROM `test` WHERE name not LIKE '%:%' (ну или как хочешь отличать данные с датой и без) Второй: SELECT * FROM `test` WHERE name LIKE '%:%' order by name,optional asc и потом полученные данные совмещаеш. |
|
|
|
|
# 17 |
|
Newbie
Регистрация: 11.04.2003
Адрес: Мытищи
Сообщения: 26
![]() |
Все нормально получается:
SELECT * FROM `test` WHERE 1 ORDER BY name, optional ASC; cid name optional 0 10:00 aaaaa 0 0 10:00 aaaaa 1 0 10:00 bbbbb 0 0 10:00 fghjkhg 0 1 10:00 fghjkhg 1 0 11:00 0 Так надо? Или я чё-то недопонимаю? Просто я asc зря добавил, если его не указать по умолчанию сортировка и так по возрастанию будет. так что на него можно забить. Последний раз редактировалось Sava; 07.06.2004 в 15:10. |
|
|
|
|
# 18 |
|
сошел
Регистрация: 03.06.2002
Сообщения: 662
![]() ![]() ![]() ![]() |
_ARMAGEDDON_
пагади, у тебя '10:00 aaaaa' - это одно поле и ты хочешь чтоб сотировало не учитывая буквы ( только '10:00 ) ? |
|
|
|
|
# 19 | |
|
Guest
Сообщения: n/a
|
попробуй вот так
0 10:00 bbbbb 0 0 10:00 aaaaa 1 0 10:00 ссссс 0 1 10:00 cghjkhg 1 0 10:00 fghjkhg 0 0 11:00 0 если отсортируется, то значит мне сегодня больше нельзя работать ![]() Цитата:
|
|