Хочу сделать многоуровневую реферальную программу.
Например у нас есть юзер1, который пригласил юзер2 и юзер3.
Юзер2 пригласил в свою очередь юзер4 и юзер5.
И таким образом, если юзер5 делает какой-то донат, то X% от всей суммы получает Юзер2 (тот, кто пригласил). И Y% от всей суммы получает Юзер1 (который в свою очередь пригласил того, кто пригласил этого пользователя)
В голову приходит самый простой вариант:
id — PK
username
email
parent_id — FK
Как я понимаю, если у меня будет 5 уровневая партнерская программа, то мне надо будет сделать минимум 5 запросов. Есть ли проще вариант решения этой задачи?
Благодарю тех, кто уделил внимание
Как я понимаю, если у меня будет 5 уровневая партнерская программа, то мне надо будет сделать минимум 5 запросов. — если база поддерживает рекурсивные запросы — можно ограничиться одним
Знаю что оркал поддерживает. Но там сложность запроса — экспоненциальная, если не ошибаюсь
Рекурсивные запросы Ну или на беке итерируйтесь Это явно не онлайн операция
Да уже почти все через cte поддерживают
На беке итерируйтесь > это значит, что мне нужно на беке сделать 5 запросов в базу?
когда я смотрел в последний раз — мыскль не поддерживал
Например В реале у вас не будет глубоких структур А начисление можно раз в сутки делать
Правильно ли я понял, что будет отдельно таблица транзакций (донатов). И раз в день надо будет выбирать новые записи, и пробегаться по каждой, и делать рассчёты процентов ?
Ну, и без рекурсивных cte жили же Когда-то, там где было нужно быстро, я просто материализовывал все транзитивные связи. Это не сильный оверхед по месту и сильное ускорение на запросах некоторых видов
Обсуждают сегодня