@alex_p95
Учусь

Как правильно сделать каталог товаров?

Друзья, здравствуйте! Прошу помочь кто может.
Имеется 2 таблицы, 1 с категориями товаров:
- id_category
-category_name
-parent_Id

И вторая таблица с товарами :

Id_goods
Goods_name
Id_category

Они связаны друг с другом через id_category.
В первой таблице в полях где parent_id пустой - родительская категория и у него есть дочерние поля, которые будут ссылаться на это поле. При выводе почти нечто такое :
Телевизоры
Жк телевизоры
Крист телевизоры и т.д.

Суть вопроса : как сделать запрос чтобы на выходе мы получили ответ название товара и название родительской категории?

То есть например вот так :
Телевизоры( это category_name у которой parent_Id = null) , телевизор LG ( goods name )

Не получается составить запрос...
Получается по отдельности выбрать название родительской категории и товаров принадлежащей к конкретной категории, а дальше не могу додуматься:(

Большое спасибо откликнувшимся!
  • Вопрос задан
  • 884 просмотра
Решения вопроса 1
@res2001
Developer, ex-admin
Для двух вложенностей запрос будет выглядеть так:
select c1.category_name, g.Goods_name
from goods as g
left join category as c on c.id_category = g.id_category
left join category as c1 on c1.id_category = с.parent_Id

Для большей вложенности, нужно раскручивать дальше, т.е. по аналогии добавлять дополнительные joinы.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@lnked
select c.category_name, c.parent_Id, g.Id_goods, g.Goods_name, c.id_category
from goods as g
left join category as c on c.id_category = g.id_category
Ответ написан
MySQL не умеет рекурсивные запросы, и при большой вложенности будет лишняя нагрузка при выборке. Поэтому при вложенности категорий больше 1 уровня (Телевизоры - ЖК Телевизоры - 3Д телевизоры и так далее) проще добавить в таблицу категорий поле top_parent_id.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы