MySQL объединяет таблицы без дубликатов

У меня есть две таблицы: одна таблица содержит стихи, представленные участниками. Другой - это таблица участника. Обе таблицы содержат идентификатор участника (MID и SubMID). Я хочу отобразить последние 15 стихов, которые были обновлены. Тем не менее, я хочу показать только одну работу для любого автора.

Это работает, но если автор обновляет несколько работ, они отображаются много раз:

SELECT * FROM submits, members
WHERE submits.SubMID = members.MID AND submits.sub_approved = 'T'
ORDER BY submits.sub_Last_Update DESC LIMIT 15

Вы можете увидеть результаты этого запроса здесь в бегущей области справа: http://www.prose-n-poetry.com/

Проблема в том, что один автор может взять на себя выделение, обновив несколько стихов.

2 ответа

Решение
SELECT *
FROM members m
JOIN (SELECT s.*
      FROM submits s
      JOIN (SELECT SubMID, MAX(sub_Last_Update) lastUD
            FROM submits
            WHERE approved = 'T'
            GROUP BY SubMID) l
      ON s.SubMID = l.SubMID AND s.sub_Last_Update = l.lastUD) s
ON m.MID = s.SubMID
ORDER BY s.sub_Last_Update DESC
LIMIT 15

Редактировать: как прокомментировал @Barmar, это не даст список последних представлений для пользователя.

Попробуйте сгруппировать по участнику

$query = "
SELECT
*

FROM
submits, members

WHERE
submits.SubMID = members.MID

AND
submits.sub_approved = 'T'

GROUP BY
submits.SubMID

ORDER BY
submits.sub_Last_Update DESC

LIMIT 15
";
Другие вопросы по тегам