#mysql
#mysql
Вопрос:
у меня есть таблица с данными, в которой есть данные как категории, так и подкатегории.
Итак, что такое категория и подкатегория?категория является родительской, а подкатегория — дочерней. Оба данных похожи, за исключением одного отличия, parent_id для sub_category — это идентификатор категории.
Что требуется?
имя подкатегории в результате должно быть category-name ‘-‘ sub-category-name
Какова моя попытка решить проблему?
Запрос MySQL, который я возвращаю, выполняется только для извлечения подкатегории только с именами:
SELECT
CONCAT(wcfc1.feed_category_name,
'-',
wcfc2.feed_category_name) AS feed_category_name,
wcfc2.feed_category_id,
wcfc2.parent_id,
wcfc2.category_type_id
FROM
wc_feed_categories wcfc1
JOIN
wc_feed_categories wcfc2 ON wcfc1.feed_category_id = wcfc2.parent_id;
Этот запрос показывает только:
я не могу понять, как написать запрос, чтобы показать как категорию, так и подкатегорию с изменением имени в одном запросе.
Ответ №1:
Вместо
JOIN
wc_feed_categories wcfc2 ON wcfc1.feed_category_id = wcfc2.parent_id;
попробуйте
LEFT JOIN
wc_feed_categories wcfc2 ON wcfc1.parent_id = wcfc2.feed_category_id;
таким образом, ваш запрос будет:
SELECT
CASE
WHEN wcfc1.parent_id = 0 THEN wcfc1.feed_category_name
ELSE
CONCAT(wcfc2.feed_category_name, -- parent category
'-',
wcfc1.feed_category_name) -- child category
END AS feed_category_name,
wcfc1.feed_category_id,
wcfc1.parent_id
FROM
wc_feed_categories wcfc1
LEFT JOIN
wc_feed_categories wcfc2 ON wcfc1.parent_id = wcfc2.feed_category_id;
Комментарии:
1. это работает, и я понял, как оно выполняется.