Morgan » 2010.03.10 21:37 |
Запрос : SELECT `user`,COUNT(*) FROM `posts` GROUP BY `user`; получаем ТОЛЬКО пользователя и количество его постов. Как можно подсчитать, количество сгруппированных значении? Кроме как mysql_num_rows() ничего нем придумал |
Morgan » 2010.03.10 22:27 |
Подсказали функцию SQL_CALC_FOUND_ROWS . Можно ее использовать как то в одном запросе? |
Gemorroj » 2010.03.10 22:43 |
Нужно подсчитать количество уникальных users? В конкретно тобой приведенном SQL, COUNT и так будет работать корректно. А вот если добавшь LIMIT, тогда да, вполне себе SQL_CALC_FOUND_ROWS |
Morgan » 2010.03.10 23:18 |
Gemorroj написал:Нужно подсчитать количество уникальных users? В конкретно тобой приведенном SQL, COUNT и так будет работать корректно. А вот если добавшь LIMIT, тогда да, вполне себе SQL_CALC_FOUND_ROWS
коунт Возвратит количество сообщений для каждого пользователя, но никак не количество самих юзеров |
Gemorroj » 2010.03.11 05:45 |
Morgan написал:получаем ТОЛЬКО пользователя и количество его постов.
имелось ввиду, что тут COUNT будет вполне корректно работать.
Morgan написал:Как можно подсчитать, количество сгруппированных значении?
чем не устраивает mysql_num_rows? просто непонятно, зачем делать GROUP BY, если тебе нужно подсчитать количество пользователей?
не ? |
Morgan » 2010.03.11 07:55 |
Хм, сегодня попробую |
2010 » 2010.03.11 13:58 |
Morgan, смотри вот например я писал форум. У меня был раздел и подраздел. Мне нужно было узнать список подразделов id #1 т.е. первого номера. Я сделал так: создаю раздел.
@mysql_query(INSERT INTO `forum` (type, name) VALUES("s", "NUMBER ONE");
Создан раздел с именем намбер ван с идом 1. Теперь создаём подраздел. Естествено если мы не укажем куда он создаётся - то он появится во всех разделах.
Теперь как уже создали раздел выводим список.
$q = mysql_query('SELECT id, name FROM `forum` WHERE `type`="s"');
while ($s = mysql_fetch_object($q) { echo '<a href="index.php?s=' . $s->id . '">' . $s->name . '</a><br/> } это мы вывели имена разделов и их номер от 1 до доху..
Теперь мы переходим по адресу index.php?s=1 т.к. номер 1. Там создаём подраздел.
@mysql_query(INSERT INTO `forum` (type, sid, name) VALUES("subs", "1", "NUMBER ONE subs");
мы создали. Теперь достаём.
$q = mysql_query('SELECT id, name, sid FROM `forum` WHERE `type`="subs" AND `sid`="' . $s . '"');
while ($subs = mysql_fetch_object($q) { echo '<a href="index.php?s=' . $subs->id . '">' . $subs->name . '</a><br/> }
как видишь тип ссылки - subs что означает подраздел. И выражение sid - куда мы передали переменную s с джет запроса index.php?s=1 - мы получили имена подразделов раздела номер 1. выше вторым, был написан инсерт запрос где мы присвоили имя NUMBER ONE subs разделу номер 1. И вот я о том и говорю, точно также можно вывести количество сообщений юзера и подсчитать их например select count(*) from users where login=$lgn and sid=1 то есть к какому sid`у относятся сообщения юзера. Короче типа представь что я написал: раздел - это логин юзера, а подраздел - это его кол-во сообщений или данных. Считай количество имено тут: $q = mysql_query('SELECT id, name, sid FROM `forum` WHERE `type`="subs" AND `sid`="' . $s . '" ORDER BY id DESC');.
ORDER BY id DESC - НЕ ЗАБУДЬ в конце. |
Morgan » 2010.03.11 14:13 |
Gemorroj, работает. Теперь вопрос другой. Есть таблица, личные сообщения. При отправке записывается айди текущего ю3ера и кому он шлет сообщение. Мне нужно подсчитать количество уникальных пользователей, с которыми текущий пользователь имел контакт, слал, либо принимал сообщения. То есть, Условие должно быть WHERE user1 = 1 OR user2 = 1; как это сделать? Добавлено спустя 3 минуты 40 секунд:
2010 написал:Morgan, смотри вот например я писал форум. У меня был раздел и подраздел. Мне нужно было узнать список подразделов id #1 т.е. первого номера. Я сделал так: создаю раздел.
@mysql_query(INSERT INTO `forum` (type, name) VALUES("s", "NUMBER ONE");
Создан раздел с именем намбер ван с идом 1. Теперь создаём подраздел. Естествено если мы не укажем куда он создаётся - то он появится во всех разделах.
Теперь как уже создали раздел выводим список.
$q = mysql_query('SELECT id, name FROM `forum` WHERE `type`="s"');
while ($s = mysql_fetch_object($q) { echo '<a href="index.php?s=' . $s->id . '">' . $s->name . '</a><br/> } это мы вывели имена разделов и их номер от 1 до доху..
Теперь мы переходим по адресу index.php?s=1 т.к. номер 1. Там создаём подраздел.
@mysql_query(INSERT INTO `forum` (type, sid, name) VALUES("subs", "1", "NUMBER ONE subs");
мы создали. Теперь достаём.
$q = mysql_query('SELECT id, name, sid FROM `forum` WHERE `type`="subs" AND `sid`="' . $s . '"');
while ($subs = mysql_fetch_object($q) { echo '<a href="index.php?s=' . $subs->id . '">' . $subs->name . '</a><br/> }
как видишь тип ссылки - subs что означает подраздел. И выражение sid - куда мы передали переменную s с джет запроса index.php?s=1 - мы получили имена подразделов раздела номер 1. выше вторым, был написан инсерт запрос где мы присвоили имя NUMBER ONE subs разделу номер 1. И вот я о том и говорю, точно также можно вывести количество сообщений юзера и подсчитать их например select count(*) from users where login=$lgn and sid=1 то есть к какому sid`у относятся сообщения юзера. Короче типа представь что я написал: раздел - это логин юзера, а подраздел - это его кол-во сообщений или данных. Считай количество имено тут: $q = mysql_query('SELECT id, name, sid FROM `forum` WHERE `type`="subs" AND `sid`="' . $s . '" ORDER BY id DESC');.
ORDER BY id DESC - НЕ ЗАБУДЬ в конце.
ты что мне предлагаешь? Подсчитать количество без COUNT? |
2010 » 2010.03.11 14:59 |
Кто тебе сказал что без count? я написал: имено то, подсчитать. Будто ты сам не понял чем. |
2010 » 2010.03.11 15:27 |
Морган, ну просто берёшь отправляешь сообщение. При отправке работает инсерт запрос. Ты записываешь логин юзера в определённый столб в определённый ник когда он его примит или отправит. На второй раз если этот логин существует - записи не будет т.е. специально код пишешь. Далее выводишь список тех с кем имел контакт. Может не понятно объяснил но тебе надо приписать чужой ник отправителя или кому отправил что бы этот ник записался на твоё имя и потом вывел. или ты Код не знаешь? |
Gemorroj » 2010.03.11 17:34 |
Вместо 1 ID пользователя, для которого считаем данные. |