Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте есть 2 таблицы user и messages
Поля:
user - id, name, phone, status
messages - id, id_user, message, status
В таблице USER есть 3 пользователя id 1, id 2, id 3
В таблице MESSAGES 5 сообщении 2 сообщения от id_user 3
и 3 сообщения от id_user 1
По идее должно вывести так 1, 3, 2
Нужно отсортировать таблицу user ко католичеству сообщений каждого пользователя то есть по id, связи между таблицами id и id_user
Я попытался составить запрос но получилось не корректно выводит только 1 id пользователя а не 3 как должно быть.
Помогите составить запрос.
МОЙ запрос:
Неактивен
Неактивен
vasya написал:
select u.id, u.name, u.phone, u.status, count(id_user) from `user` u left join messages m on u.id=m.id_user group by 1,2,3,4 order by 5 desc;
На примере вашего примера маленько изменив составил запрос он выводит все id ы пользователей но выводит их не так как нужно он так и не сортирует их по количеству сообщений в таблице messages.
Что я сделал не так?
$result = mysql_query ("SELECT " . DB_PREFIX . "user.id, count(" . DB_PREFIX . "messages.id_user) FROM `" . DB_PREFIX . "user` LEFT JOIN `" . DB_PREFIX . "messages` ON " . DB_PREFIX . "user.id=" . DB_PREFIX . "messages.id_user WHERE " . DB_PREFIX . "user.status!='0' AND " . DB_PREFIX . "user.status!='4' GROUP BY " . DB_PREFIX . "user.id ORDER BY " . DB_PREFIX . "messages.id_user DESC");
if (mysql_num_rows ( $result ) != 0) {
for ( $i = 0; $i < mysql_num_rows ( $result ); $i++ ) {
$id_user = mysql_result ( $result, $i );
echo "" . $id_user . "<br />";
}
}
Отредактированно gheka (04.06.2012 01:06:21)
Неактивен
Потому что вы сортируете по messages.id_user, а не по кол-ву сообщений.
Неактивен
vasya написал:
Потому что вы сортируете по messages.id_user, а не по кол-ву сообщений.
Поставил так но ничего не изменилось всё равно не сортирует
count(" . DB_PREFIX . "messages.message)
и
ORDER BY " . DB_PREFIX . "messages.message) DESC"
Отредактированно gheka (04.06.2012 01:30:23)
Неактивен
Кол-во сообщений пользователя это count(messages.id_user) - по этому значению и нужно сортировать.
Неактивен
vasya написал:
Кол-во сообщений пользователя это count(messages.id_user) - по этому значению и нужно сортировать.
Спасибо за ответы.
Не в этом дело решил проблему таким методам.
Дописал:
count(" . DB_PREFIX . "messages.message) AS `count`
и
ORDER BY `count` DESC"
Полный запрос может кому пригодится:
Неактивен
Есть ещё вопрос по этому запросу как этому запросу добавить сортировку по типу сообщений то есть
в таблице MESSAGES добавлено поле type которое равняется 0 или 1
0 - не прочитано
1 - прочитано
Что нужно добавить к запросу чтобы в первую очередь выводились id пользователей с type = 1 а потом уже остальные?
Неактивен
.. order by column1 desc, colum2 ..
http://dev.mysql.com/doc/refman/5.5/en/select.html
Неактивен