Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Нужна помощь в оптимизации запросов. (Роман) 14/02/2007 - 14:19:32
      Re: Нужна помощь в оптимизации запросов. (Роман) 14/02/2007 - 14:21:04
      Re: плачу 10 WMZ тому кто реализует... (Роман) 14/02/2007 - 21:56:32
      Re: плачу 10 WMZ тому кто реализует... (Boris) 15/02/2007 - 14:58:18
      Re: плачу 10 WMZ тому кто реализует... (Роман) 20/02/2007 - 06:26:44



From: Роман - 14/02/2007 - 14:19:32
Subject:Нужна помощь в оптимизации запросов.
-----------------
Уважаемые господа! Обыскал весь форум, перерыл учебники, не могу найти решения своей задачи.

Есть две таблицы:
Ссылки (links)
lid text url siteid
1 Текст1 URL1 1
2 Текст2 URL1 2
3 Текст3 URL1 2
4 Текст4 URL1 1
5 Текст5 URL1 3

Сайты (sites)
id name cat
1 Сайт1 1
2 Сайт2 2
3 Сайт3 1
4 Сайт4 1
5 Сайт5 3

Необходимо при заданной cat (категория) вывести из таблицы несколько URL, причем так, чтобы все относились к разным сайтам.

Т.е. получить примерно след:

lid text url siteid
1 Текст1 URL1 1
2 Текст2 URL1 2
5 Текст5 URL1 3

Пока у меня получилось сделать так:

$Q = "SELECT id FROM sites WHERE cat=$cat ORDER BY RAND() LIMIT $pp;";

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

while ($ar=mysql_fetch_array($r))
{
if ($Q2!="") $Q2.= " UNION ";
$Q2.= "SELECT * FROM links WHERE lid=".$ar["id"];
}

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

Таким образом у меня для вывода 4х ссылок требуется 5 селектов :(.

Никто не знает как можно оптимизировать запрос? Возможно с изменением структуры таблиц (все уже перепробовал).

Заранее благодарен!


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
30795



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |