powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Получить все категории и подкатегории товара
4 сообщений из 4, страница 1 из 1
Получить все категории и подкатегории товара
    #38347614
nuklon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня!
Задача вроде бы стандартная, даже здесь на форуме похожие темы есть, но ответов как-то не нашел.
К сути:
Есть таблица товаров (модели обуви), мне нужно вытащить список моделей с соответствующ(ими/ей) категори(ями/ей).
Таблица категорий - id, parent_id, name
Таблица товаров - id, parent_ext, name
Делаю такой запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT c.name AS cname, s.name AS sname,  m.*
            
 FROM `".RA_DB_PREFIX."cat` AS c
 LEFT JOIN `".RA_DB_PREFIX."cat` AS s ON s.parent = c.id
            
 LEFT JOIN `".RA_DB_PREFIX."model` m 
 ON m.`iParentExt` = c.`id` 
            
 GROUP BY m.`iParentExt` 
 ORDER BY m.`idModel` DESC


Возвращается такой результат:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Array
(
    [0] => Array
        (
            [cname] => Кроссовки
            [sname] => 
            [idShoesModel] => 1
            [iParentExt] => 25
            [iActive] => 1
            [iPrice] => 840
            [iSex] => 1
            [sName] => мод-133
            [sArticle] => 123456
            [sImg] => 
        )
 
    [1] => Array
        (
            [cname] => Зима
            [sname] => Классика
            [idShoesModel] => 
            [iParentExt] => 
            [iActive] => 
            [iPrice] => 
            [iSex] => 
            [sName] => 
            [sArticle] => 
            [sImg] => 
        )
 
)


А нужно (т.к, в таблице моделей пока 1 товар)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Array
(
    [0] => Array
        (
            [cname] => Кроссовки
            [sname] => Лето,Спорт
            [idShoesModel] => 1
            [iParentExt] => 25
            [iActive] => 1
            [iPrice] => 840
            [iSex] => 1
            [sName] => мод-133
            [sArticle] => 123456
            [sImg] => 
        )
)

Использование
Код: sql
1.
GROUP_CONCAT(s.`name`) AS sname

ничего путевого не дает.
Если бы каталог не был бы вложенным, то проблем нет (в задаче три вложенности), а так товар может принадлежать как каталогу нулевой вложенности, так и третьей. И надо вернуть соответствующие каталоги.
Если решалась такая задача, дайте ссылку или подскажите куда копать.
Как я предполагаю здесь просто надо какую-то ветку брать из дерева каталога, а точка отсчета может быть как в самом внизу (тогда мне нужно найти всех родителей), вверху (тогда уже - всех детей), либо посередине (родители и дети текущего). Правильно ли я думаю? Если да, то каков инструмент решения?
...
Рейтинг: 0 / 0
Получить все категории и подкатегории товара
    #38347986
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Цитаты запроса с другими полями. В криптографию не вникал.

Если "Таблица товаров - id, parent_ext, name" содержит ссылки сама на себя, типа parent_ext = id ее надо LEFT JOIN через алиасы саму с собой столько раз, сколько там подразумевается вложений. Откройте таблицу и посмотрите сколько там уровней. Затем уже станет понятно что группировать, что выкидывать и откуда брать отношение к категории.
...
Рейтинг: 0 / 0
Получить все категории и подкатегории товара
    #38348010
nuklon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
deblogger, про криптографию не понял.
Ссылки на саму себя я делаю в запросе для таблицы категорий `".RA_DB_PREFIX."cat` , вложеность = 3.
А в таблице товаров есть поле parent_ext, которая ссылается на один из пунктов таблицы категорий.
debloggerее надо LEFT JOIN через алиасы саму с собой столько раз, сколько там подразумевается вложений.я весь день пробую эти join'ы в разных позах, не мог бы ты привести пример..?
...
Рейтинг: 0 / 0
Получить все категории и подкатегории товара
    #38348043
=)8)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
13509125 и далее
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Получить все категории и подкатегории товара
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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