Как подсчитать пары при помощи MySQL?

Есть 4 таблицы с данными.

Надо написать запрос к БД который добавляет на счёт человека 10%, в виде бонусов, от суммы внесённой друзьями и друзьями друзей которых он привёл до, например 3 уровня (максимум 7) вложенности (Основной человек -> Друг -> Друг Друга -> и дальше ).

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

После добавления бонуса за 10 пар (20 друзей) (для теста можно 3 пары - 6 друзей и/или друзей друзей), бонусы за эти суммы платежей больше не могут быть добавлены. Только за новые. Платежи должны быть со статусом Completed.

Описание таблиц:

  1. ihc_orders - таблица с информацией о платежах. ihc_orders.uid - столбец с внутренним id пользователя. ihc_orders.amount_value - столбец с суммой платежа. ihc_orders.status - столбец со статусом платежа.
  2. uap_affiliates - таблица рангов, но нам она нужна только для связи ihc_orders с остальными таблицами.
  3. uap_affiliate_referral_users_relations - таблица отношений между пользователями. uap_affiliate_referral_users_relations.affiliate_id - столбец с id пользователя. uap_affiliate_referral_users_relations.referral_wp_uid - столбец с id друга/аффилиата/реферрала.
  4. uap_referrals - таблица для записи результата. Таблица заполняется на основании имеющихся данных.

Связи между таблицами:

  • ihc_orders.uid = uap_affiliates.uid
  • uap_affiliates.id = uap_affiliate_referral_users_relations.affiliate_id

Версия MySQL на сервере 10.5.1-1.el7.centos

Некоторые моменты отбора уже получились, но не получается сформировать и подсчитать количество пар относящихся к пользователю и, соответственно, начислить проценты.

Таблицы и части запроса, которые получились на данный момент, можно посмотреть по ссылке fiddle


Ответы (0 шт):