поиск одинаковых вхождений group by и сортировка по ним

BoBka-altRUist

Новичок
поиск одинаковых вхождений group by и сортировка по ним

наверное многие с этим сталкивались:

есть таблица пользователей, там есть поле с ip-адресом записанным во время регистрации, нужно вывести пользователей с одинаковыми ip (если повторных ip>1) и желательно сгрупировать по ним, но т.к. пользователей очень много нужно ограничить вывод.

я делал так:

SELECT `reg_ip` AS `i`FROM `users` where `reg_ip`<>'' && `reg_ip`<>'0.0.0.0' GROUP BY `reg_ip`HAVING COUNT(`reg_ip`) > 1;


и потом при помощи ORM

$users=ORM::factory('user')->in('reg_ip', $a)->find_all();
где в $a - массив тех записей с одинаковыми ip

возможно есть вариант реализовать это по-другому?
 

iceman

говнокодер
нужно вывести пользователей? формулируй утверждения правильно =)

-~{}~ 03.10.10 23:25:

> `reg_ip`<>''
reg_ip is not null? reg_ip != null ?
 

zerkms

TDD infected
Команда форума
Вурдалак
в данном конкретном случае - какая разница? :)
 

Вурдалак

Продвинутый новичок
В любом случае совет лишним не будет. У меня триггер срабатывает, когда вижу ЭТО.
 

iceman

говнокодер
PHP:
select t.user_name from users as t
where t.reg_ip in (
SELECT `reg_ip` AS `i`FROM `users` where `reg_ip`<>'' && `reg_ip`<>'0.0.0.0' GROUP BY `reg_ip`HAVING COUNT(`reg_ip`) > 1;
)
это самый просто запрос и это лучше чем юзать массив, если конечно там массив.
 

iceman

говнокодер
> $users=ORM::factory('user')->in('reg_ip', $a)->find_all();

я так понял, передается массив и уже в пхп идет сравнение на вхождение, если так - то в твоем случае лучше подзапрос использовать, но запрос можно улучшить (прочитав мануал про group by или exists) ;)
 

Rin

*
SELECT ... IN (SELECT ...) на больших объёмах данных в Mysql-5.0 будет работать вечно, в Mysql-5.1 эту ошибку исправили. Но 2 отдельных запроса всё равно быстрее.
 

iceman

говнокодер
> прочитав мануал про exists

в in не в какой бд нельзя подзапрос вставлять, для этого используют экзист, in использовать только для перечисления статичных данных
 

zerkms

TDD infected
Команда форума
iceman
ты определись сначала, нельзя или можно.

далее: в нормальных взрослых субд, типа постгри, оракла и sql server такие запросы очень даже хорошо оптимизируются.
 
Сверху