powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вывести название товара и цепочку категорий
4 сообщений из 4, страница 1 из 1
Вывести название товара и цепочку категорий
    #38708262
pehser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть 2 таблицы category и product
category:
categoryID
parent
name

product:
productID
categoryID
name

вывести всех парентов категории получилось
тобиш если у меня категория аксесуары с id=19 и унее родители Samsung и Сотовая связь
тобиш
Сотовая связь
Samsung
Аксессуары

выполняю запросс
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT GROUP_CONCAT(T2.name SEPARATOR "->") category_path
FROM (
       SELECT @r AS _id
        , (SELECT @r := parent
           FROM   category
           WHERE categoryID = _id) AS parent_id
        , @l := @l + 1 AS lvl
        FROM   
           (SELECT @r := categoryID, @l := 0 FROM   category WHERE  categoryID = 19) as var,
            category as C 
      WHERE  @r <> 0 ORDER BY lvl DESC) T1 JOIN category T2 ON T1._id = T2.categoryID



на выходе получаею

автор"Сотовая связь->Samsung->Аксессуары"

с этим хорошо, но вот захотел я еше вывести имя товара и рядышком такую цепочку категорий в зависемости от того где он находится

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select @cid := categoryID, name,
(
SELECT GROUP_CONCAT(T2.name SEPARATOR "->") 
FROM (
       SELECT @r AS _id
        , (SELECT @r := parent
           FROM   category
           WHERE categoryID = _id) AS parent_id
        , @l := @l + 1 AS lvl
        FROM   
           (SELECT @r := categoryID, @l := 0 FROM   category WHERE  categoryID = @cid) as var,
            category as C 
      WHERE  @r <> 0 ORDER BY lvl DESC) T1 JOIN category T2 ON T1._id = T2.categoryID
) category_path
from product



в резуальтате у всех товаров одна и таже цепочка 0_O

Код: plaintext
1.
2.
3.
4.
5.
6.
9,   "Toyota Land Cruiser 100",  Автомобили->Toyota
24,  "Lexus GS300",              Автомобили->Toyota
13,  "BURTON Balance",           Автомобили->Toyota
14,  "Samsung R200",             Автомобили->Toyota
14,  "Samsung N100",             Автомобили->Toyota
......

подскажите пожалуйста в чем ошибка
...
Рейтинг: 0 / 0
Вывести название товара и цепочку категорий
    #38708315
pehser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот для обросца загрузил схему
...
Рейтинг: 0 / 0
Вывести название товара и цепочку категорий
    #38708414
pehser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Вывести название товара и цепочку категорий
    #38709233
Users
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pehser,

робею спросить, а почему должно быть несколько категорий?

Выборка идет отсюда, да?
FROM
(SELECT @r := categoryID, @l := 0 FROM category WHERE categoryID = @cid) as var,
category as C
WHERE @r <> 0 ORDER BY lvl DESC)

И здесь жестко прописано: FROM category WHERE categoryID = @cid

Дорогой товарищ, что ж вы хотите-тО? что @cid у вас лежит - то и выдается, как категория.


Далее потом. У вас два подзапроса выполняется, написана куча кода. оба подзапроса из одной таблицы.
и еще раз она же джойнится сама к себе. Это повод задуматься - а зачем же я нагородил такую конструкцию? Когда кода много, когда он некрасивый - это однозначно признак того, что реализация кривая.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вывести название товара и цепочку категорий
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]