170 похожих чатов

Господа бекендеры, есть sequelize, есть таблица на postgresql с категориями

товаров, в ней есть поля id и parentId. структура древовидная - то есть parentId ссылается на id в этой же таблице. Есть таблица с товарами с полем catId - ссылкой на таблицу с категориями.
каким образом можно для категории с id = N выбрать все товары всех детей.
или такой вопрос лучше в sql группах искать?

15 ответов

9 просмотров

Селект products where cat_id in (select cat_id from categories where parent_id = n)

FroG- Автор вопроса

вложенность может быть уровня 5-6

хм, я бы тогда у детерей все дерево складывал, в колнку если такая задача есть. Вообще есть запросы с рекурсией (в мускуле, по идее в постгре тоже), но они отжирают много

FroG- Автор вопроса

угу, сейчас пробую рекурсию делать в постгре, хочу проверить как быстро это будет работать.

FroG- Автор вопроса

но в sequelize наверное засунуть это не смогу )

угу. Смотри, самый простой и быстрый варик тут будет добавить колонку three, в которой хранить всю цепочку родителей категории. из серии 1,4,8,99 потом делать выборку, по самым нижним, джойнить, и делать uniqu

FroG- Автор вопроса

как вариант читал что можно добавить таблицу со всеми перечислениями связей в таблице, но всё же попробую пока рекурсию :D

да, так можно тоже) п.с. если на уровне базы не выйдет, можно дерево обхобходить в коде и класть резалты в редись а вторым запросам собирать уже посты)

FroG- Автор вопроса

спасибо, пойду пробовать)

Я так понимаю категории не часто изменяются. Тогда nested sets то что вам нужно

FroG- Автор вопроса

загуглил и первую ссылку прочитал, если Вы про это, то я сломался https://habr.com/ru/post/63416/

в каком моменте сломались?

FroG- Автор вопроса

с ключами left right )

FroG- Автор вопроса

правда там в конце статьи про parentId скользом упомянуто...

все просто. у вас есть ид, парент ид, лево и право.

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

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта