我有两张桌子:一张桌子包含会员提交的诗歌。另一个是会员的表。两个表都包含成员的ID(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
问题在于,一位作者可以通过更新几首诗来接管字幕。
答案 0 :(得分:1)
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
答案 1 :(得分:0)
编辑:@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
";