Parse URL из базы

svas

Guest
Parse URL из базы

Есть таблица в MYSQL с полем URL, в котором URL может имет различный формат и http:///xxx.ru/fggg.html и в виде просто ip:xxx.xxx.xxx.xxx/?dll и в http://koi-8r.xxx.ru/fffggf.html
Нужно вывести TOP 50 например, выводя вместо http:///xxx.ru/fggg.html и http://koi-8r.xxx.ru/fffggf.html только хост xxx.ru
Можно ли составить так select,чтобы можно было написать Select ***** from *** limit 0,50.
Как то не хотелось бы делать select url from .... , а потом прогонять через parse_url, записей много.
 

Кром

Новичок
Ну, 50 записей, это ерунда. Так что parse_url вполне оптимальный вариант.
 

svas

Guest
Автор оригинала: Кром
Ну, 50 записей, это ерунда. Так что parse_url вполне оптимальный вариант.
Это вывести на экран top50, а в базе 5милионов адресов может быть

-~{}~ 20.04.05 13:48:

при этом забыл сказать, что должен вывести первые 50 url, которые чаще встречаются в базе
 

Кром

Новичок
>Это вывести на экран top50, а в базе 5милионов адресов может быть

То что лежит в базе никакого отношения к данной проблеме не имеет. :)
Ты пишешь: "limit 0,50", ты хоть знаешь, что это означает? Что из базы будут выбраны 50 строк. Которые и нужно обработать. Совсем ничего, по времени.
 

svas

Guest
Автор оригинала: Кром
>Это вывести на экран top50, а в базе 5милионов адресов может быть

То что лежит в базе никакого отношения к данной проблеме не имеет. :)
Ты пишешь: "limit 0,50", ты хоть знаешь, что это означает? Что из базы будут выбраны 50 строк. Которые и нужно обработать. Совсем ничего, по времени.
Что такое лимит мне известно. Ситуация такая:
приведу кусок кода: <php>
$sql="select `url`, count(`url`) as nums from `table` group by `nums` order by `nums` desc limit 0,50";
$res=mysql_query($sql);
while ($row=fetch_array($res))
{
$url=parse_url(row['url']);
echo $url['host']."<br>";
}
</php>
Это все даст примерно то что надо, но туда могут попасть такие URL как status.icq.com и web.icq.com , которые надо вывести как одно icq.com, или yandex.ru b click.yandex.ru, вместо этого должна быть запись yandex.ru. То есть уже получается 48 записей... Как вариант можно конечно подсчитать итоговое количество, получаем например после обработки 38 записей, и делать опять select .... limit 50,50 , но не хотелось бы .... Вариант такой групировки не мое желание, а каприз клиента. :-(
 

Tor

Новичок
svas
заведи в базе еще одно поле, в котором храни только последнюю часть
например для status.icq.com и web.icq.com пиши icq.com
тогда и выбирать будет удобно
 
Сверху