Вывод поста, который содержит 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
Листинг программы
  1. SELECT DISTINCT p.post_id
  2. ,p.category_id
  3. ,p.title
  4. ,p.meta_title
  5. ,p.meta_description
  6. ,p.meta_keywords
  7. ,p.text
  8. ,p.img
  9. ,c1.title AS category1
  10. ,c2.title AS category2
  11. ,c3.title AS category3
  12. FROM post AS p
  13. JOIN   category c1 ON (c1.category_id = p.category_id)
  14. JOIN   category c2 ON (c2.category_id = c1.parent_id)
  15. JOIN   category c3 ON (c3.category_id = c2.parent_id)
  16. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы