[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите составить запрос правильно
spiderbuber
Требуется вывести таблицу первых 5-ти авторов и количество их постов по убыванию (т.е. у кого больше постов тот на 1-м месте и т.д.),
исключая автора с именем, например admin.

Я это делаю (точнее пытаюсь сделать) следующим образом:
$a = "select name from posttxt group by name limit 5";
$b = mysql_query($a);
while ($imena = mysql_fetch_array($b))
{
$a1 = "SELECT text, COUNT(*) FROM posttxt WHERE name='".$imena['name']."' && validate = 1 GROUP BY text";
$b1 = mysql_query($a1);
$c1 = mysql_fetch_array($b1);

$posts = ' ('.mysql_num_rows($b1).')';
echo "<a href=''>".$imena['name']."</a>".$posts."<br>";
}

Получаю такой результат:
123 (2)
admin (18)
Типок (11)
tester (1)
Абармот (3)

А хотелось бы получить такой результат:
Типок (11)
Абармот (3)
123 (2)
tester (1)
+ Имя (1)



Спустя 4 минуты, 22 секунды (21.02.2007 - 20:19) md5 написал(а):
Цитата
Типок (11)

Тимок =))

эта...

короче ты структуру обеих баз сюда дай, там одним запросом можно вытащить это

что-то вроде этого
[sql]
SELECT U.`name`, COUNT(P.`post`) AS `posts`
FROM `users` AS U
JOIN `posts` AS P
ON P.`user_id`=U.`id`
ORDER BY `posts` DESC
LIMIT 5
[/sql]

Спустя 19 минут, 4 секунды (21.02.2007 - 20:38) Ghost написал(а):
...
FROM `users` AS U
WHERE U.`name` <> "admin"
JOIN `posts` AS P
...

Спустя 11 минут, 24 секунды (21.02.2007 - 20:49) md5 написал(а):
Ghost,
Цитата
Требуется вывести таблицу первых 5-ти авторов и количество их постов по убыванию (т.е. у кого больше постов тот на 1-м месте и т.д.)


дальше этой строчки не читал =))))

Спустя 19 часов, 59 минут, 50 секунд (22.02.2007 - 16:49) spiderbuber написал(а):
Cтруктура таблиц такова:
Таблица category: |category_id|category_name|
Таблица posttxt: |txt_id|category_id|name|text|rate|emailed|date_add|validate|title|viewed|votes|
Где:
category_id - ИД категорий
category_name - Имена категорий

txt_id - ИД поста
category_id - в какой категории находится пост
name - имя автора
text - текст поста
rate - рейтинг поста
emailed - сколько раз отправлен
date_add - дата добавления
validate - подтверждение админом
title - название поста
viewed - сколько раз прочитан
votes - всего голосов

Спустя 3 минуты, 36 секунд (22.02.2007 - 16:52) md5 написал(а):
а причем тут категории? у тебя щас в ходу таблица с юзерами и постами

Спустя 11 минут, 25 секунд (22.02.2007 - 17:04) spiderbuber написал(а):
Вот это помогло
Цитата
WHERE name <> admin

Спасибо!
А как все одним запросом сделать?

2 md5 - категории тут ни при чем, это я тупанул просто :)
А юзеры и посты хранятся в одной таблице (posttxt)

Цитата
user_id
- причем у юзера нет никакого ИД

Спустя 36 минут, 49 секунд (22.02.2007 - 17:41) md5 написал(а):
фигасе
тебе в помощь GROUP BY

PHP
  1. $query = "SELECT COUNT(`txt_id`) AS `posts`, `user`
  2. FROM `posts`
  3. GROUP BY `user`
  4. ORDER BY `posts` DESC
  5. LIMIT 5";


ну и конечоно же
[эскьюэл]
ГДЕ `йузэр`!='админ'
[/эскьюэл]

Спустя 3 часа, 34 минуты, 47 секунд (22.02.2007 - 21:15) spiderbuber написал(а):
Немного не так, но я уже разобрался. Огромное спасибо за подсказку. Тема закрыта...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.