[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите составить запрос с сортировкой
grisha2013
Сейчас у меня реализовано с помощью двух циклов. Сначала делается один запрос, берутся id категорий в выбранном разделе, затем вложенным циклом делаю доплнительно запросы на выборку нужной инфы по каждой из категорий.
После чего отображаются все данные взятые со всех категорий, с сортировкой по рейтингу. Но сортировка хромает. У меня сортировка происходит отдельно в массивах по категории, а нужно собрать все в один массив и отсортировать все сразу, но это для меня сложно, да и делать запрос в цикле это не есть хорошо. А как это все объединить в одном запросе, да еще чтобы все было отсортировано, я не знаю.

Структура базы такая
В таблице razdel есть поля id и name
В таблице category, есть поля id, razdel_id и name
В таблице data, есть поля id, category_id, rating, name и т.д.

Хочу сделать следующее:
Получив id раздела через $_POST, выбирать все id в таблице category входящих в выбранный раздел по razdel_id.
Затем взять все поля rating из таблицы data, где category_id равен ранее выбранным id в таблице category.
После чего нужно отсортировать по убыванию все поля rating, взятые из всех категорий выбранного раздела.

Надеюсь, ни у кого мозг не закипел от прочтенного rolleyes.gif

Можно ли все это сделать одним запросом, или все таки без вложенных циклов такое не реализуемо?
Oyeme
SELECT d.* FROM razdel r JOIN category c ON r.id = c.razdel_id
JOIN data d ON d.category_id = c.id
WHERE r.id = 777
ORDER BY d.rating DESC


r.id = 777 // тут твое Ид раздела
grisha2013
Огромное спасибо!
А можно еще как-то добавить/скопировать поле name из таблицы category в data, где category_id в data соответствует id в category, чтобы кроме рейтинга можно было вывести и имя категории?

И если не трудно, поделитесь ссылочкой на то как составлять такие запросы.
Valick
Цитата (grisha2013 @ 17.03.2015 - 03:28)
И если не трудно, поделитесь ссылочкой на то как составлять такие запросы.

вам нужна хорошая книга

SELECT d.*, c.name FROM razdel r JOIN category c ON r.id = c.razdel_id
JOIN data d ON d.category_id = c.id
WHERE r.id = 777
ORDER BY d.rating DESC


_____________
Стимулятор ~yoomoney - 41001303250491
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.