|
|
|
| Здравствуйте.
Нужна помощь с запросом.
Вобщем имеется таблица text:
id | id_user | time | msg
|
Необходимо подсчитать самых активным и вывести их.
Допустим имеются такие записи:
1 | 1 | 1273193669 | текст
1 | 2 | 1273194669 | текст
1 | 3 | 1273195669 | текст
1 | 1 | 1273196669 | текст
1 | 5 | 1273197669 | текст
1 | 3 | 1273198669 | текст
1 | 1 | 1273199669 | текст
|
Скрипт должен вывести такое:
Всего активных: 4
ID активного (кол-во записей):
1 (3)
3 (2)
2 (1)
5 (1)
|
Вывод должен быть с сортировкой по "кол-во записей".
Думаю поняли, что я хочу.
Заранее, большое спасибо! | |
|
|
|
|
|
|
|
для: class
(09.05.2010 в 02:21)
| | поищите среди этих тем | |
|
|
|
|
|
|
|
для: class
(09.05.2010 в 02:21)
| |
SELECT id_user, COUNT(*) AS cnt
FROM `text`
GROUP BY id_user
ORDER BY cnt DESC
|
| |
|
|
|
|
|
|
|
для: Valick
(09.05.2010 в 07:59)
| | Спасибо, но запрос не работает (( | |
|
|
|
|
|
|
|
для: class
(11.05.2010 в 01:20)
| | покажите код | |
|
|
|
|
|
|
|
для: Valick
(11.05.2010 в 01:24)
| | Пробовал по Вашему запросу просто делать подсчет активных, но не получилось.
Вобщем мне надо вывести в таком виде:
Всего активных: 4
ID активного (кол-во записей):
1 (3)
3 (2)
2 (1)
5 (1)
|
т.е. нужен запрос на подсчет активных и запрос на вывод ID активных + запрос на вывод кол-ва в скобках. | |
|
|
|
|
|
|
|
для: class
(11.05.2010 в 01:20)
| | Спасибо, но запрос не работает ((
не хотите показывать код... "тогда мы идем к Вам"
<?php
include "conect.php";
$query="SELECT id_user, COUNT(*) AS cnt
FROM `text`
GROUP BY id_user
ORDER BY cnt DESC ";
$res=mysql_query($query);
$row=mysql_num_rows($res);
if($row>0){
echo "Всего активных: $row <br />";
while($class=mysql_fetch_array($res)) echo "$class[id_user] ($class[cnt])<br />";
}
?>
|
результат
Всего активных: 4
1 (3)
3 (2)
2 (1)
5 (1)
| что не так? | |
|
|
|
|
|
|
|
для: Valick
(09.05.2010 в 07:59)
| | COUNT(*) AS cnt
ORDER BY cnt DESC
Вы уверены, что написали то, что хотели написать?
COUNT(*) AS cnt - количество всех записей, которые подходят данному запросу. Постоянная величина в данном конкретном запросе, как по ней можно сортировать? :)
Или я чего-то не понимаю.
update
посмотрел свои аналогичные запросы
Единственное отличие - не COUNT(*), а COUNT(id_user). Мб в этом дело. | |
|
|
|
|
|
|
|
для: neadekvat
(11.05.2010 в 01:36)
| | Вы уверены, что написали то, что хотели написать?
да
COUNT(*) AS cnt - количество всех записей, которые подходят данному запросу. Постоянная величина в данном конкретном запросе, как по ней можно сортировать? :)
Или я чего-то не понимаю.
почитайте что такое агрегатные функции | |
|
|
|
|
|
|
|
для: class
(09.05.2010 в 02:21)
| | Со всем разобрался, но вот не могу сделать запрос на подсчет кол-ва всех активных. | |
|
|
|
|
|
|
|
для: class
(11.05.2010 в 02:05)
| | гы, COUNT(*) ? | |
|
|
|
|
|
|
|
для: neadekvat
(11.05.2010 в 02:10)
| | Да, с этим проблема. | |
|
|
|
|
|
|
|
для: class
(11.05.2010 в 02:11)
| | В каком смысле, какая проблема? | |
|
|
|
|
|
|
|
для: neadekvat
(11.05.2010 в 02:21)
| | Делаю такой запрос на вывод всех активных.
Выводит не верную сумму, считает по первому ID и выводит сумму по ID 1.
<?php
echo 'Всего активных: '.mysql_result(mysql_query("SELECT COUNT(*) FROM text GROUP BY id_user"), 0);
?>
|
| |
|
|
|
|
|
|
|
для: class
(11.05.2010 в 02:23)
| | " GROUP BY id_user"
уберите, зачем это здесь? | |
|
|
|
|
|
|
|
для: neadekvat
(11.05.2010 в 02:27)
| | Тогда выведет сумму всех записей в таблице text.
А нужно вывести именно сумму активных.
Допустим в таблице text имеется всего четыре записи (3 записи с id_user=2 и одна запись с id_user=1), т.е. скрипт должен вывести цифру 2.
Думаю поняли мою мысль =) | |
|
|
|
|
|
|
|
для: class
(11.05.2010 в 02:28)
| | mysql_num_rows(mysql_query(SELECT DISTINCT id_user FROM text));
В голову такое решение пришло | |
|
|
|
|
|
|
|
для: neadekvat
(11.05.2010 в 02:36)
| | DISTINCT выводит только уникальные (не повторяющиеся) данные
вы этим запросом подсчитаете ТОЛЬКО к-во уникальных юзеров | |
|
|
|
|
|
|
|
для: oliss
(11.05.2010 в 04:04)
| | Да, кол-во юзеров, которые уже отевтили в теме. Вы же сказали сами, нужны активные юзеры - уж не они ли это? | |
|
|
|
|
|
|
|
для: class
(09.05.2010 в 02:21)
| | Странно, что при структуре
id | id_user | time | msg
вы указываете
1 | 1 | 1273193669 | текст
1 | 2 | 1273194669 | текст
1 | 3 | 1273195669 | текст
1 | 1 | 1273196669 | текст
....
|
| |
|
|
|
|
|
|
|
для: oliss
(11.05.2010 в 02:52)
| | ой, ошибся, извиняюсь.
Там AUTO_INCREMENT | |
|
|
|
|
|
|
|
для: class
(11.05.2010 в 03:37)
| | Запрос при большом количестве юзеров будет тормознутым, проще в табл. юзеров добавить поле кол-во сообщений( для каждого юзера)
Кстати ,а в табл text надо добавить поле с id темы(статьи) тогда сможите выбирать сколько сообщений юзера в данной теме
Но лучше ввести третью таблицу id юсер --id сообщения --id тема(документ) --ко-во сообщений(в документе [статье] )
тогда выборка будет мгновенной по индексам | |
|
|
|
|
|
|
|
для: oliss
(11.05.2010 в 04:12)
| | 1) не будет
2) не проще | |
|
|
|
|
|
|
|
для: Valick
(11.05.2010 в 10:15)
| | Это почему ,аргументируйте ,пожалуйста | |
|
|
|
|
|
|
|
для: oliss
(11.05.2010 в 15:14)
| | с какгого перепугу? Вы выразили свое мнение (абсолютно без аргументов), я выразил свое мнение (основываясь на своих знаниях). | |
|
|
|