Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Сортировка данных по количеству строк в другой таблице

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
gheka
Отправлено: 03 Июня, 2012 - 22:27:21
Post Id



Частый гость


Покинул форум
Сообщений всего: 191
Дата рег-ции: Февр. 2011  


Помог: 2 раз(а)




Здравствуйте есть 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
и чтобы пользователя status!=0 и !=4
Я попытался составить запрос но получилось не корректно выводит только 1 id пользователя а не 3 как должно быть.
Помогите составить запрос.
МОЙ запрос:
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. $result = mysql_query ("SELECT *, count(" . DB_PREFIX . "messages.id_user) FROM `" . DB_PREFIX . "user` 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' ORDER BY " . DB_PREFIX . "messages.id_user DESC");
  3.  
  4.                                                                                        
  5. IF (mysql_num_rows ( $result ) != 0) {
  6.         FOR ( $i = 0; $i < mysql_num_rows ( $result ); $i++ ) {
  7.                 $user_list = mysql_fetch_assoc ( $result );
  8.                                
  9.                 echo "" . $user_list ['id'] . "<br />";
  10.         }
  11. }
  12.  

(Отредактировано автором: 03 Июня, 2012 - 23:10:39)

 
 Top
gheka
Отправлено: 04 Июня, 2012 - 13:45:35
Post Id



Частый гость


Покинул форум
Сообщений всего: 191
Дата рег-ции: Февр. 2011  


Помог: 2 раз(а)




Не дождался ответа поэтому всё же решил сам таким образам . Может кому нибудь пригодится.

CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. $result = mysql_query ("SELECT " . DB_PREFIX . "user.id, count(" . DB_PREFIX . "messages.message) AS `count` 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 `count` DESC");
  3.    
  4. IF (mysql_num_rows ( $result ) != 0) {
  5.     FOR ( $i = 0; $i < mysql_num_rows ( $result ); $i++ ) {
  6.         $id_user = mysql_result ( $result, $i );
  7.                
  8.         echo "" . $id_user . "<br />";
  9. }
  10. }
  11.  

Если есть более правильное решение напишите.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB