Я буду использовать образный пример.
Есть конференция, и у меня есть список людей, которых я хочу пригласить. Список представляет собой следующую таблицу:
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-запросов здесь?
Спасибо!
Я переписал весь вопрос, чтобы лучше объяснить мою проблему
Задача ещё не решена.
Других решений пока нет …