Вывод поста, который содержит id категории, её родителя, родителя родителя - MySQL
Формулировка задачи:
Есть 2 таблицы, первая - категории ( category_id, parent_id и т.д), вторая - посты (post_id, category_id)
В общем, в "категориях" есть 12 категория (допустим), у неё дочерняя категория 13, у которой есть ещё категория 14 и в этой самой категории у меня запись в таблице "посты".
Мне нужно вывести информацию о этом посте + числа всех этих 3х категорий.
12 - 13 - 14 - и далее все остальные поля
Как это сделать?)
у меня получается только вывести категорию и родительскую, а как еще вывести самую верхнюю категорию не пойму
SELECT * FROM category WHERE parent_id IN (SELECT category_id FROM category WHERE parent_id IN (SELECT category_id FROM category))
Решение задачи: «Вывод поста, который содержит id категории, её родителя, родителя родителя»
textual
Листинг программы
SELECT DISTINCT p.post_id ,p.category_id ,p.title ,p.meta_title ,p.meta_description ,p.meta_keywords ,p.text ,p.img ,c1.title AS category1 ,c2.title AS category2 ,c3.title AS category3 FROM post AS p JOIN category c1 ON (c1.category_id = p.category_id) JOIN category c2 ON (c2.category_id = c1.parent_id) JOIN category c3 ON (c3.category_id = c2.parent_id) WHERE p.post_id = '" . (int)$post_id . "' AND p.STATUS = '1'
Объяснение кода листинга программы
- В данном коде происходит вывод поста, который содержит id категории, её родителя, родителя родителя.
- Для этого используется язык SQL и три таблицы:
post
,category
и их связи. - В первой строке кода используется оператор
SELECT DISTINCT
, который позволяет выбрать уникальные значения полейpost_id
,category_id
,title
,meta_title
,meta_description
,meta_keywords
,text
,img
,category1
,category2
,category3
. - Затем в строке
FROM
указываются таблицы, которые будут участвовать в запросе. - Далее в строке
JOIN
указываются условия для объединения таблиц. - В последней строке кода используется оператор
WHERE
, который позволяет задать условия для выборки постов. - В условии
p.post_id = '
. (int)$post_id .' AND p.STATUS = '1'
указывается id поста и его статус. - Значение переменной
$post_id
приводится к типуint
, чтобы избежать ошибок при сравнении. - Код выводит посты, которые соответствуют указанным условиям.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д