|
|
|
| Есть такой запрос:
mysql_query("SELECT id, FROM `mes` WHERE number='$ID' GROUP BY code ORDER BY viewed,id DESC");
|
В таблице содержаться много строк с одинаковым значением code, и их группирую GROUP BY code.
Как сделать сортировку сначала по viewed(0 либо 1 в таблице), а потом по id DESC(от большого числа к меньшему). Из-за ORDER BY не правильно сортирует. | |
|
|
|
|
|
|
|
для: designshadow
(23.02.2011 в 22:15)
| | Хм... если не сложно, прикрепите дамп таблицы, чтобы можно было воспроизвести ситуацию и подобрать подходящий запрос (только ведь при группировке в поля id и viewed будут попадать случайные значения из группы, т.е. не всегда имеет смысл сортировать). | |
|
|
|
|
|
|
|
для: cheops
(24.02.2011 в 05:31)
| | cheops
Упрощал запрос, сделал ошибку.
mysql_query("SELECT id, FROM `mes` WHERE number in (1,2) GROUP BY code ORDER BY viewed,id DESC");
|
id -- code - viewed - number
1 -- asd --- 1 -------- 2
2 -- sss --- 1 -------- 1
3 -- asd --- 1 -------- 2
4 -- sss --- 1 -------- 1
5 -- sss --- 1 -------- 1
6 -- asd --- 0 -------- 2
Должен вывести первым number 2 а потом number 1 но получается наоборот...
Вообщем такой запрос с GROUP BY не корректно сортирует. | |
|
|
|
|
|
|
|
для: designshadow
(24.02.2011 в 17:29)
| | Дело в том, что сначала выполняется группировка, а лишь потом сортировка, т.е. у вас в качестве групповой строки может быть совершенно любая из asd и sss строк. Может получиться, что viewed у обеих строк равен 1 или 1 и 0, причем при добавлении и удалении записей эти строки будут изменяться. Вы какие id хотите получить и вообще какая стоит задача? | |
|
|
|
|
|
|
|
для: cheops
(24.02.2011 в 19:27)
| | Опишу полностью задачу:
mysql_query("SELECT own_id, other_id FROM `mes` WHERE own_id='$ID' OR other_id='$ID' GROUP BY code ORDER BY viewed,id DESC LIMIT $start, $num");
table messages:
id -- code - viewed - own_id -- my_id -- text
1 -- asd --- 1 ----------- 2 --------- 1
2 -- sss --- 1 ----------- 1 --------- 2
3 -- asd --- 1 ----------- 2 --------- 1
4 -- sss --- 1 ----------- 1 --------- 2
5 -- sss --- 1 ----------- 1 --------- 2
6 -- asd --- 0 ----------- 2 --------- 1
...
116 -- rfd --- 1 ----------- 32 --------- 12
...
226 -- 45g--- 1 ----------- 17 --------- 99
id - autoincrement, primary(id сообщения)
code - уникальное число, связь между отправителем и получателем сообщения
viewed - если 0 то сообщение не просмотрено, если 1 то просмотрено.
Хочу реализовать вывод сообщений для конкретного пользователя группируя и сортируя по viewed,id DESC.
Т.е пользователь заходит к себе в сообщения, если нет новых сообщений то сообщения группируются и сортируются от последнего полученного/прочитанного к первому.
А если какие-то сообщения не прочитаны то сначала выводятся они, а потом уже все остальные от последнего полученного/прочитанного к первому.
Задача реализована, проблема лишь в сортировке | |
|
|
|