X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Странный ответ в сортировке
Den1xxx
Den1xxx
Topic Starter сообщение 18.11.2014, 20:33; Ответить: Den1xxx
Сообщение #1


Пишу чат для своей ЦМС.
Столкнулся со странным поведением запроса.
Как его ни пиши:
1.
SELECT `id`,`time`,COUNT(`id`) AS cnt FROM chat_messages ORDER BY `time` ASC LIMIT 1;

2.
SELECT `id`,`time`,COUNT(`id`) AS cnt FROM chat_messages ORDER BY `time` DESC LIMIT 1;

Два запроса вроде разные (сортировка ASC или DESC), а ответ БД один и тот же:
[PHP]
array (
0 =>
array (
'id' => '4',
'time' => '2014-11-18 19:11:43',
'cnt' => '100',
),
)
[/PHP]
Для чего это: в чате хочу сделать ограничение по количеству сообщений в БД.
И если сообщений меньше положенного, делаю INSERT, иначе — UPDATE самого старого сообщения.
И вот такое странное поведение затирает позже первое попавшееся сообщение, даже если оно свежее. А мне нужно выбрать id самого старого.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Webmaster_hb
Webmaster_hb
сообщение 19.11.2014, 2:02; Ответить: Webmaster_hb
Сообщение #2


Den1xxx, думаю дело в том, что COUNT это групповая операция, и хоть вы не задали группировку, она происходит
в итоге, получив одну и ту же запись не важно как ее сортировать....
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 19.11.2014, 3:03; Ответить: alexdrob
Сообщение #3


Шел 31 век, сообщения чата всё ещё хранили в бд мускл и ей же считали лимит сообщений...


(Den1xxx @ 18.11.2014, 22:33) *
Для чего это: в чате хочу сделать ограничение по количеству сообщений в БД.
И если сообщений меньше положенного, делаю INSERT, иначе — UPDATE самого старого сообщения.
И вот такое странное поведение затирает позже первое попавшееся сообщение, даже если оно свежее. А мне нужно выбрать id самого старого.

Без обид, но это самый странный алгоритм который я когда либо видел...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Degradator
Degradator
сообщение 24.11.2014, 14:15; Ответить: Degradator
Сообщение #4


Для чего это: в чате хочу сделать ограничение по количеству сообщений в БД.
И если сообщений меньше положенного, делаю INSERT, иначе — UPDATE самого старого сообщения.
И вот такое странное поведение затирает позже первое попавшееся сообщение, даже если оно свежее. А мне нужно выбрать id самого старого.

Без обид, но это самый странный алгоритм который я когда либо видел...

Поддерживаю

SELECT `id`,`time`,COUNT(`id`) AS cnt FROM chat_messages - этот запрос возвращает одну строчку без лимита и ордера
делай как-то так наверно
SELECT COUNT(1) AS cnt FROM chat_messages
if()
update chat where created = MIN(created)
else{
insert
}

собственно тут id не нужен вобще

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Странный трафик на сайте длительное время
26 TABAK 7544 16.3.2024, 17:31
автор: Boymaster
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВопрос-ответ о работе форума
307 dos1k 43057 9.11.2019, 17:59
автор: heks
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыПредлагаю качественные ссылки на ответ маил
32 Ванди 11041 5.8.2018, 16:16
автор: magaca
Открытая тема (нет новых ответов) Предлагаю размещение качественных ссылок на форумах и сервисах вопрос ответ
21 ПроФФи 4961 2.3.2018, 20:56
автор: ShowPrint
Открытая тема (нет новых ответов) Предлагаю размещение постов на форумах и ответ маил, по личной базе
0 Ананасик 1956 5.1.2017, 17:32
автор: Ананасик


 



RSS Текстовая версия Сейчас: 29.3.2024, 19:21
Дизайн