Как записывать рефералов в БД по счетчику?

Доброго времени суток!

В общем имеется структура БД "Материализованный путь (Materialized Path)" для РЕФЕРАЛЬНОЙ системы
55c36b37b77a5d3c8e23b66fd53cd807.gif

Записи в БД идут следующим запросом:
CREATE TABLE mp_tree (
    `id` BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    `name` VARCHAR(50) NOT NULL,
    `path` VARCHAR(100) NOT NULL
) TYPE=InnoDB DEFAULT CHARSET=utf8;

CREATE INDEX mpp_idx ON mp_tree (`path`);

INSERT INTO mp_tree VALUES
    (1, 'FOOD', '1'),
    (2, 'VEGETABLE', '1.1'),
    (3, 'POTATO', '1.1.1'),
    (4, 'TOMATO', '1.1.2'),
    (5, 'FRUIT', '1.2'),
    (6, 'APPLE', '1.2.1'),
    (7, 'BANANA', '1.2.2');


Вопрос: каким запросом SQL или функцией PHP можно делать запись в БД, если использовать регистрацию. Т.е. человек пришел на сайт, заполнил форму, указал логин того, кто пригласил (или по ссылке) и после отправки формы записался в БД под пригласившим?

Помогите, люди добрые. 3 недели ищу. Напишите как или ткните носом.
Заранее спасибо.
Успехов Вам!

P.S. Используется материал с Хабры
  • Вопрос задан
  • 409 просмотров
Пригласить эксперта
Ответы на вопрос 2
petermzg
@petermzg
Самый лучший программист
А зачем записываться за пригласившим?
Добавьте в таблицу пользователей поле указывающее на пригласившего.
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Родители по id пользователя:
SELECT `t2`.`name`
    FROM `mp_tree` AS `t1`
    JOIN `mp_tree` AS `t2`
        ON `t1`.`path` LIKE CONCAT(`t2`.`path`, '.%')
    WHERE `t1`.`id` = :id
    ORDER BY `t2`.`path` DESC

Родители по path пользователя:
SELECT `name`
    FROM `mp_tree`
    WHERE :path LIKE CONCAT(`path`, '.%')
    ORDER BY `path` DESC

Индекс использоваться не будет, поскольку `path` используется внутри функции.
Я бы сделал на Nested Set, там вставка будет работать дольше, но выборка быстрее.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
03 мая 2024, в 16:26
3000 руб./за проект
03 мая 2024, в 16:09
1200 руб./за проект
03 мая 2024, в 16:06
3000 руб./за проект