Я столкнулся с некоторыми проблемами при написании запроса для MySQL. Я не знаю, как описать мою проблему достаточно хорошо, чтобы найти ее в Интернете, поэтому извините, если мой вопрос глупый.
У меня есть 3 таблицы:
CREATE TABLE posts( id INT, author INT );
CREATE TABLE users( id INT, nick varchar(64) );
CREATE TABLE groups( id INT, name varchar(64) );
CREATE TABLE membership (user INT, group INT, date INT ) ;
Членство содержит информацию о пользователях, которые присоединились к некоторым группам. «Дата» в таблице членства - это время, когда пользователь присоединился к этой группе.
Мне нужен запрос, который вернет сообщение, ник его автора и название группы с наименьшей датой присоединения.
Все, что у меня сейчас есть:
SELECT p.id, u.nick, g.name
FROM posts AS p
LEFT JOIN users AS u ON u.id = p.author
LEFT JOIN membership AS m ON m.user = p.author
LEFT JOIN groups AS g ON g.id = m.group
WHERE 1;
но, конечно, он возвращает случайное имя группы, а не имя с самой ранней датой присоединения.
Я также попробовал следующий вариант:
SELECT p.id, u.nick, g.name
FROM posts AS p
LEFT JOIN users AS u ON u.id = p.author
LEFT JOIN
(SELECT * FROM membership WHERE 1 ORDER BY date ASC)
AS m ON m.user = p.author
LEFT JOIN groups AS g ON g.id = m.group
WHERE 1;
но это дало мне тот же результат.
Буду признателен даже за указатели того, с чего можно начать, потому что в данный момент я не знаю, что с этим делать.