SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 09.10.2022 13:22:18

rbwest
Участник
Зарегистрирован: 30.10.2011
Сообщений: 19

Как сгруппировать посты по категориям

Добрый день, вопрос наверное банальный но справится не могу)
Есть две таблицы
post_categories
со структурой id,title
и
post
со структурой id,title,post_cat
Мне надо получить в массиве такое:
Первая категория
  - Пост 1
  - Пост 2
Вторая категория
  - Пост 1
  - Пост 2

Делаю вот так


$quizdata = $wpdb->get_results("
       SELECT c.id category_id, c.title category_title, p.title post_title, p.post_cat post_cat
       FROM  post_categories c
       LEFT JOIN post p
       ON c.id = p.id
"
);
 

Но само собой получаю вот так:

Первая категория
  - Пост 1
Вторая категория
  - Пост 1
Первая категория
  - Пост 2
Вторая категория
  - Пост 2


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

Отредактированно rbwest (09.10.2022 13:25:26)

Неактивен

 

#2 09.10.2022 22:49:11

estic
Завсегдатай
Зарегистрирован: 01.10.2022
Сообщений: 25

Re: Как сгруппировать посты по категориям

Просто сортируйте по категории. В таком виде можно будет сразу выводить, добавляя вывод (имени) категории, когда меняется идентификатор категории в соседних записях. Сохранять идентификатор текущей категории нужно в отдельной переменной, предварительно ее обнулив.

В такой выборке обычно основной является таблица постов, т.е. к ней нужно присоединять таблицу категорий, а не наоборот. Если нет задачи выводить пустые категории. И дважды выбирать идентификатор категории нет смысла (в category_id и post_cat будут одинаковые значения). Если есть возможность назвать одинаково поля category_id и post_cat, можно использовать USING() и wildcard, например:

SELECT `post`.*, `post_categories`.`title` `category_title`...

Неактивен

 

#3 09.10.2022 23:11:25

estic
Завсегдатай
Зарегистрирован: 01.10.2022
Сообщений: 25

Re: Как сгруппировать посты по категориям

...wildcard в любом случае можно использовать. А category_id можно использовать в ON, но не выбирать.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson