Поиск избирателей, которые не голосовали на выборах через отношения многих ко многим с MySQL - PullRequest
0 голосов
/ 04 марта 2020

У меня есть две таблицы, связанные через отношение «многие к любому». Таблица 1 содержит всех избирателей с идентификатором, таблица 2 содержит все выборы с идентификатором, а таблица 3 связывает обе таблицы с использованием их идентификаторов.

Не все избиратели проголосовали на всех выборах. Я хотел бы запросить отношение «многие ко многим», чтобы найти выборы для каждого избирателя, за которого они не голосовали. Я использую MySQL.

1 Ответ

0 голосов
/ 04 марта 2020

Типичным решением для этого является генерация всех возможных комбинаций избирателей и выборов с cross join, а затем попытка привести таблицу соединений с left join: там, где нет записей, вы знаете, что избиратель пропустил выборы.

Рассмотрим:

select v.voter_id, e.election_id
from voters v
cross join elections e
left join voter_elections ve 
    on  ve.voter_id = v.voter_id
    and ve.election_id = e.election_id
where ve.voter_id is null
...