MYSQL: выходной список с условием

У меня есть эта реляционная база данных с 3 таблицами:

Таблица участников

id  member
1    Tina
2    John
3    Ellis
4    Dave

id name год 1 лето 2014 2 весна 2015 3 зима 2016 s Таблица

id  members_id project_id
1     1           2
2     1           3
3     2           1
4     2           3
5     3           1
6     4           2
7     4           1

Таблица подписчиков

member     name
 Tina      winter
 John      winter
 Ellis     summer
 Dave      spring

Я ищу запрос MYSQL, который выведет на каждого участника последний проект, на который они подписались. Таким образом, запрос даст следующий результат:

SELECT members.member, projects.name
FROM members
JOIN subscribers ON members.id = subscribers.members_id
JOIN projects ON projects.id = subscribers.projects_id

У меня есть этот запрос

SELECT `members`.`member`, `projects`.`name`
FROM `members`
  JOIN ( SELECT `members_id` , MAX(`project_id`) AS `project_id`
         FROM `subscribers` GROUP BY subscribers.`members_id`) AS `latest`
    ON `members`.`id` = `latest`.`members_id`
  JOIN `projects` ON `projects`.`id` = `latest`.`project_id`
ORDER BY `members`.`id`;

Но это дает мне 7 строк с членами и их названиями проектов. Я хочу, чтобы только 4 участника с их последним именем проекта, как упомянуто выше.

Что мне не хватает?

mysql,

2

Ответов: 2


ВЫБЕРИТЕ членов . член , проекты . name FROM members JOIN ( SELECT members_id , MAX ( project_id ) AS projects_id ОТ подписчиков GROUP BY members_id ) Члены S ON . id = s . members_id РЕГИСТРИРУЙТЕСЬ проекты О проектах . id = s . projects_id = '4263417' itemscope itemtype = 'http: //schema.org/Answer'>
1 принят

Это должно работать:

Project

1
id

Вышеприведенный запрос будет работать в предположении, что в Projectтаблице idувеличение Yearтакже увеличивается (или не уменьшается).

MySQL,
Похожие вопросы