У меня проблемы с 2 запросами для моего класса БД.
У меня есть одна таблица "клиенты" с этими столбцами:
name | id | date | points | REFERRAL
---------------------------------------------
daniel | 123456 | 01-01-01 | 50 | 321321
jack | 321321 | 01-01-01 | 30 | 555555
Обратите внимание, что Даниил упоминался Джеком
1) С идентификатором одного человека показать всех клиентских рефералов и рефералов от них до третьего эталонного уровня
Сначала я думаю о чем-то подобном, просто для эталонного уровня 2:
SELECT C1.name
FROM Clients C1, Clients C2
WHERE C1.REFERRAL= 21000301
AND C1.id= C2.REFERRAL
Это явно не работает для AND.
Тогда я попробую UNION:
SELECT C1.id, C1.REFERRAL
FROM Clients C1
WHERE C1.REFERRAL= 21000301
UNION
SELECT C2.id, C2.REFERRAL
FROM Clients C2
WHERE C2.REFERRAL= C1.ID
Но не может получить доступ к C1 на втором SELECT
Итак, мой вопрос: есть способ договориться с СОЮЗОМ.
Если нет, то как я могу решить это?
2) Показать имя и общее количество рефералов для клиента с более прямыми и косвенными рефералами.
На этом я полностью потерян: D, может быть, это рекурсивно? Есть ли что-то подобное в SQL?
Заранее спасибо, и извините, мой плохой английский.