MySQL - ПРИСОЕДИНЯЙТЕСЬ, что группы в 1 записывают минимум столбца и максимум другого - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть таблица участников (member_id, name, et c ..) и таблица членства (id, member_id, дата начала членства, дата окончания срока членства) с отношением один ко многим, потому что каждый год для каждого участника есть новая запись.

Когда я делаю:

SELECT * FROM members
INNER JOIN membership ON members.member_id = membership.member_id

Я получаю несколько записей для каждого участника. Как я могу сгруппировать записи только в одну запись для каждого участника, которая содержит МИНУЛУ даты начала членства и МАКС. Даты окончания членства? Спасибо.

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

Вы можете выполнить агрегацию из производной таблицы membership. Например:

SELECT m.*, ms.start_date, ms.exp_date
FROM members m
JOIN (SELECT member_id, MIN(start_date) AS start_date, MAX(exp_date) AS exp_date
      FROM membership
      GROUP BY member_id) ms ON ms.member_id = m.member_id
0 голосов
/ 03 апреля 2020

Я бы использовал агрегацию:

SELECT m.*, min(ms.start_date), max(ms.expiration_date)
FROM members m
     membership ms
     ON m.member_id = ms.member_id
GROUP BY m.member_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...