Mysql взаимное исключение между строками через поле ссылки

Я буду использовать образный пример.
Есть конференция, и у меня есть список людей, которых я хочу пригласить. Список представляет собой следующую таблицу:

People (id (PK), name, excludes)

У каждого человека может быть человек, с которым он не хочет встречаться («исключает» означает человека, которого он не хочет).

Итак, у меня есть, например, следующий список

100, Jack, 101
101, John, NULL
102, Bob, 103
103, Mary, 102

Это означает, что Джек (id 100) не хочет встречаться с Джоном, у Джона нет проблем, а Боб не хочет встречаться с Мэри. Взаимно Мэри не хочет встречаться с Бобом.

Теперь я хочу выбрать людей для приглашения на мою конференцию.
Правило следующее:

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

Так, например, я получаю следующий список по порядку:

Bob
John
Mary
Jack

Это означает, что Боб приглашен. Я знаю, что Боб не хочет встречаться с Мэри. Мэри не будет приглашена.
Затем есть Джон. У Джона нет проблем ни с кем, ни у людей до него (боб) нет проблем с ним. Итак, Джон приглашен.
Мэри не может быть приглашена, потому что Боб (более важный, потому что он занимает первое место в списке) не хочет с ней встречаться.
Джек ненавидит Джона! Но Джон приглашен, поэтому Джек не может быть приглашен.

Результат будет:

Bob
John

Другой пример: я получаю следующий список по порядку:

Mary
John
Jack
Bob

Мэри приглашена, она не хочет видеть Боба.
Джон приглашен, потому что у Мэри нет проблем с ним. Он может встретиться со всеми.
Джек не приглашен! Он не может встретить Джона.
Боб не приглашен, потому что он не может встретить Мэри, а Мэри не может встретить Боба.

Результат будет:

Mary
John

Я не знаю, как создать запрос для моих нужд. Я не знаю, возможен ли такой запрос.

Любой гуру SQL-запросов здесь?

Спасибо!

Я переписал весь вопрос, чтобы лучше объяснить мою проблему

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]