Перейти к контенту

SQL запрос, не найду правильного решения.


Рекомендуемые сообщения

запрос:

SELECT id, name, color, stat_time, stat_year, stat_count, visits_count FROM ibf_members ORDER BY stat_count DESC LIMIT 0, 5

 

выводит всех активных пользователей, НО.

Дело в том что есть еще активные и по кол-ву входов в систему, за это отвечает visits_count.

Хочу сделать так, чтобы находил активных по stat_count, а затем по visits_count.

Сразу сообщу, что так:

..... ORDER BY stat_count, visits_count  DESC LIMIT 0, 5

не получается.

В первом примере берется активный по stat_count, т.е. у которого больше цифра.

Например

 

USER----- stat_count ----- visits_count

user1---------57--------------- 453

юзер2--------45------------- 376

user3---------45 -------------- 762

user4----------9 -------------- 66

user5----------3-------------- 78

 

по примеру видно, что юзер2 по stat_count стоит на равных с user3, но user3 больше входов по visits_count чем у юзер2.

Получается сортируется еще и по алфовиту...

Как это избежать и сделать так, чтобы юзер2 стоял(русский ник) ниже user3, т.е. чтобы проверка была еще и на visits_count.

Думаю понятно описал, яснее некуда..)

Ссылка на комментарий
Поделиться на других сайтах

Тестить было не начём - не ругать сильно :D

Есть таблица rpg_settings

-------------+------------------+
---rpg_name--+--register_rules--+
------1------+--------1---------+
------2------+--------1---------+
------2------+--------5---------+
------3------+--------1---------+
------4------+--------1---------+

 

Такой запрос:

select rpg_name, register_rules from rpg_settings order by rpg_name desc, register_rules desc

Выдаёт следущее:

 

-------------+------------------+
---rpg_name--+--register_rules--+
------4------+--------1---------+
------3------+--------1---------+
------2------+--------5---------+
------2------+--------1---------+
------1------+--------1---------+

 

Это то, что вам нужно?

Ссылка на комментарий
Поделиться на других сайтах

2Heckfy

 

visits_count какого типа ?

Изменено пользователем Song
Ссылка на комментарий
Поделиться на других сайтах

Destruction

rpg_name desc, register_rules desc

так еще не пробовал, видимо да, надо будет простестировать)

надо еще заметить, что русский текст всегда выше, хоть у него visits_count меньше по сравнению с другим..

 

Song

visits_count INT UNSIGNED NOT NULL

оба значения одного типа INT.

Ссылка на комментарий
Поделиться на других сайтах

У меня вопрос.

Вот этот листинг:

 

USER----- stat_count ----- visits_count

user1---------57--------------- 453

юзер2--------45------------- 376

user3---------45 -------------- 762

user4----------9 -------------- 66

user5----------3-------------- 78

 

соответствует запросу с

..... ORDER BY stat_count, visits_count DESC LIMIT 0, 5

?

 

Потому что вроде как нет.

Ссылка на комментарий
Поделиться на других сайтах

не соответствует.

листинг создается таким запросом:

ORDER BY stat_count DESC LIMIT 0, 5

когда при таком запросе

ORDER BY stat_count, visits_count DESC LIMIT 0, 5

все идет в разброс и я не могу понять, как он их сортирует.

знаю точно, не так, как мне надо.

 

выяснилось еще, что сортируется не по нику, а по ID пользователя, чем они ниже, тем выше стоит в рейтинге.

Ссылка на комментарий
Поделиться на других сайтах

да млин да что ж мы гадаем ?

 

выложи листинг по запросу "ORDER BY stat_count, visits_count DESC LIMIT 0, 5", тогда глядя на него можно и догадки строить, ато непонятно кого ты мучаешься, себя или нас ?

Ссылка на комментарий
Поделиться на других сайтах

А как выбрать пользователей, имеющих одинаковые IP-адреса, например так:

[user] [ip]

12334 10.14.2.1

12332 10.14.2.1

Причем чтобы они отбирались отдельно от других, т.е. только пользователи с одинаковыми IP.

Вложенные запросы как всегда в php скриптах не работают, пока додумался до примитивного варианта выбирать юзеров по одинаковому IP, показывая последний зарегенный ник...

require_once ('inc/config.php');
mysql_connect("$host", "$user", "$password") or die("Could not connect to MySQL Server");
mysql_select_db("$db") or die("Could not select database");
$sql = "SELECT ip_address, name, id FROM $members GROUP BY ip_address HAVING count(*)>1";
$result = mysql_query($sql) or die("Could not execute the query");
$rows = mysql_num_rows($result);
  if ((!$rows) || ($rows < 1)) {
	echo "Nothing found"; }
  else	{
	   echo
	   '<table border="1" cellspacing="0" cellpadding="0" bordercolor="#993399" align="left"><tr>
	   <td width="70">ID</td>
	   <td width="110">Name</td>
	   <td width="100">IP</td></tr>';
  while($row = mysql_fetch_array($result)) {
	   $id = $row["id"];
	   $name = $row["name"];
	   $ip = $row["ip_address"];
	   echo
  "<tr>
  <td width=\"70\">$id</td>
  <td width=\"110\">$name</td>
  <td width=\"100\">$ip</td>
  </tr>";
  } }

 

А вот такого вида в php не работает..

SELECT ip_address, id, name FROM $table WHERE ip_address = ANY (SELECT ip_address FROM $table GROUP BY ip_address HAVING count(*)>1);

Изменено пользователем Felix
Ссылка на комментарий
Поделиться на других сайтах

Вложенные запросы не работают в MySQL.

 

Если хотите всех пользователей под данным IP, то в вашем while добавьте второй запрос

SELECT ip_address, id, name FROM $table WHERE ip_address = $row["ip_address"]

 

вот собственно так это все и решается пока.

Ссылка на комментарий
Поделиться на других сайтах

нет в MySQL до 5-ой версии вложенных запросов.

 

С пятой мне счастья поработать не представилось, так что про нее ничего сказать не могу.

Ссылка на комментарий
Поделиться на других сайтах

нет в MySQL до 5-ой версии вложенных запросов.

Поправка. До 4.1. В 5 уже триггера и хранимые процедуры обещают.

Ссылка на комментарий
Поделиться на других сайтах

А нам нужны ники всех кто имеют эти повторяющиеся ип.

ну дык можно и ники.

Вот тока что попробовал у себя на форуме:

SELECT author_name, ip_address, COUNT(ip_address) as tt 
FROM ibf_posts GROUP BY ip_address
HAVING tt > 1

Ссылка на комментарий
Поделиться на других сайтах

>> И там будут все ники или тоьлко один?

Все.

 

Ник ------ IP ----- кол-во_повторений

 

ну попробуй над своей базой, чего так просто усомнивляться? :))

 

Такой запрос нельзя в Оракле исполнить, в мускуле пожалуйста.

 

Хотя ты знаешь.. если будут два ника из-под одного IP, то они наверна сольются =)

Надо сделать GROUP BY ip_address, author_id

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.