Помогите составить запрос mysql.

Статус
В этой теме нельзя размещать новые ответы.

swer

Профессор
Регистрация
14 Июн 2008
Сообщения
304
Реакции
38
Есть вот такой запрос
PHP:
$sql = "SELECT id, name, description from site where id IN
(SELECT uid FROM `tags` WHERE `tag` LIKE '".$tag."%')";
который получает данные сайтов с тегами которые были введены.Все работает отлично, но выводит по дефолту,те по ид (от меньшего к большему),а мне надо по релевантности и я добавил ORDER BY tag
PHP:
$sql = "SELECT id, name, description from site where id IN
(SELECT uid FROM `tags` WHERE `tag` LIKE '".$tag."%' ORDER BY tag )";
но как оказалось IN не принимает в значение последовательность передаваемых uid и тем самым выводит как и прежде.
Вопрос. как построит запрос что бы вывел так как мне надо без использования циклов(а значит кучу запросов) , а с 1 но сложным запросом.
 
Если не ошибаюсь то конструкция Order by позволяет сортировать по нескольким полям сразу попробуй вот такую вот конструкцию
PHP:
$sql = "SELECT id, name, description from site where id IN 
(SELECT uid FROM `tags` WHERE `tag` LIKE '".$tag."%' ORDER BY tag,name,description )";

Через запятую указывай поля по которым сортировать данные плюс не забывай про параметры ASC и DESC
 
Сортировка во внутреннем подзапросе ничего не даст. ORDER BY должно стоять в основном запросе. Попробуй вместо подзапроса испольховать JOIN.
PHP:
$sql="SELECT t1.id, t1.name, t1.description from site as t1
INNER JOIN tag as t2 on t1.id=t2.uid
WHERE t2.tag LIKE '".$tag."%')
ORDER BY t2.tag";
 
  • Нравится
Реакции: swer
Спасибо, хот и немного с ошибкой-лишняя ")" но все работает отлично.:)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху