Вывод поста, который содержит 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'

Объяснение кода листинга программы

  1. В данном коде происходит вывод поста, который содержит id категории, её родителя, родителя родителя.
  2. Для этого используется язык SQL и три таблицы: post, category и их связи.
  3. В первой строке кода используется оператор SELECT DISTINCT, который позволяет выбрать уникальные значения полей post_id, category_id, title, meta_title, meta_description, meta_keywords, text, img, category1, category2, category3.
  4. Затем в строке FROM указываются таблицы, которые будут участвовать в запросе.
  5. Далее в строке JOIN указываются условия для объединения таблиц.
  6. В последней строке кода используется оператор WHERE, который позволяет задать условия для выборки постов.
  7. В условии p.post_id = ' . (int)$post_id . ' AND p.STATUS = '1' указывается id поста и его статус.
  8. Значение переменной $post_id приводится к типу int, чтобы избежать ошибок при сравнении.
  9. Код выводит посты, которые соответствуют указанным условиям.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.8 из 5
Похожие ответы