Добрый день! буду очень признателен за помощь)) ломаю голову давно.
Немного истории. Есть некоторый пул запросов с URL относящимся к ним, цель выдать пересекающиеся запросы по некоторому списку URL, который определяется так же запросом
И так есть несколько запросов, которые выполняются по порядку:
$sql2 = SELECT url FROM list WHERE `group` = '1' AND `proekt`= '1' GROUP BY url ORDER BY COUNT(*) DESC LIMIT 3 - скриншот https://yadi[dot]sk/i/r6ZbyWHBkJYUD
Выбираю список URL в количестве 3х штук затем собраю их в вид для запроса
$return=array();
$maxcount=mysql_query($sql2);
while($url = mysql_fetch_array($maxcount)) {
$return[] = $url[0];
}
foreach ($return as $url1) { //собираю из массива строчку урлов для Мускула
if ($frag2==0) { $urls = "`url`="."'".$url1."'"; $frag2=1; } else $urls .= " OR `url` = '".$url1."'";
}
в данном случае $urls = `url` = 'http://www.MosDance.com/' OR `url`='http://raisky.com/' и т.д.
Вывожу список ключей относящихся к этим урлам
select `key` from (SELECT `key` , COUNT(*) AS total FROM list WHERE `group` = '1' AND `proekt`= '1' AND (".$urls.") GROUP BY `key` ORDER BY `total` DESC) as t2 WHERE t2.total >=3
скрин - https://yadi[dot]sk/i/oSN9x7xrkJYbJ
Собственно вопрос основной - как это дело сократить? Как правильно собрать урл, так чтобы можно было избавиться от php срипта-костыля, который собирает URl в нужном порядке и сделать это все к примеру одним запросом в БД? в общем как с одного запроса более умного чем мои костыли, получить конечный результат?
|