Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Составной запрос из БД
Покинул форум
Сообщений всего: 111
Дата рег-ции: Окт. 2009 Откуда: Казахстан, Алматы
Помог: 0 раз(а)
Всем привет. Пробую освоить сложные запросы в БД, но никак пока не выходит. Столкнулся с такой задачей: имею id поста, нужно узнать его id категории и из этой категории вытащить остальные посты. Модуль аля "похожие посты". Из простых нескольких запросов сделал - работает, но как несколько запросов объединить для выборки - не пойму, хотя много примеров перекопал и перепробовал разные варианты, может, кто знает?
Вроде как начинаю понимать, но пока еще сложновато для меня, только там примеры с джоинтами. Сейчас про джоинты и группировку мануал как раз копаю.
Теперь такой вопрос возник: на сколько приведенный пример оптимизирован? - нужно для сайта с большой посещалкой.
duk
Отправлено: 24 Июня, 2010 - 12:15:04
Частый гость
Покинул форум
Сообщений всего: 208
Дата рег-ции: Февр. 2010 Откуда: Москва
Помог: 3 раз(а)
isle пишет:
Теперь такой вопрос возник: на сколько приведенный пример оптимизирован? - нужно для сайта с большой посещалкой.
Насколько я помню, когда пишешь селект, то в where первым должно идти самое строгое условие, то есть то, которое отсеет максимальное количество лишних записей. Следом за ним - чуть менее строгое и так далее.
То есть тут все зависит от содержания таблицы dle_post и смысла полей approve, short_story, title
qbik
Отправлено: 24 Июня, 2010 - 13:37:54
Гость
Покинул форум
Сообщений всего: 114
Дата рег-ции: Июнь 2010
Помог: 0 раз(а)
isle пишет:
на сколько приведенный пример оптимизирован? - нужно для сайта с большой посещалкой.
$sql = "explain ".$твойзапрос очень помогает
конечно желательно чтоб база была побольше и поразличнее, полезно rnd накидать
ну и индексов набрать по смыслу
зы как минимум, у каждого проверяемого параметра в where желательно, чтоб был индекс
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
isle пишет:
Если вместо p.category='$category' вписать конкретную категорию, то работает, иначе - никак
Можете к примеру использовать вложенный SQL-запрос - а именно во вложенном запросе вы выбираете все категории к которым принадлежит ваша статья - и во внешнем запросе выбираете все статьи категории которых находятся среди списка выбранных - это можно реализовать оператором IN
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.