【发布时间】:2010-05-18 11:18:27
【问题描述】:
这个问题的简短版本是,一旦你登录,我想完成一些与 Flickr 主页上可见的内容类似的事情。它显示了你每个朋友的三张最新照片,按日期排序,但按朋友分组.
这里有一个更长的解释:例如,我有 3 个朋友:John、George 和 Andrea。我要提取的列表应该是这样的:
乔治
- 照片 - 2010-05-18
- 照片 - 2010-05-18
- 照片 - 2010-05-12
约翰
- 照片 - 2010-05-17
- 照片 - 2010-05-14
- 照片 - 2010-05-12
安德烈亚
- 照片 - 2010-05-15
- 照片 - 2010-05-15
- 照片 - 2010-05-15
上传了最近照片的朋友排在首位,但他或她的下一个文件紧随其后。
我想从 MySQL 做这个,暂时我到了这里:
SELECT photos.user_id, photos.id, photos.date_uploaded
FROM photos
WHERE photos.user_id IN (SELECT user2_id
FROM user_relations
WHERE user1_id = 8)
ORDER BY date_uploaded DESC
user1_id = 8 是当前登录的用户,user2_id 是朋友的 ID。这个查询确实返回了 id = 8 按日期排序的用户联系人上传的最新文件。但是我想完成上面提到的分组和限制。
希望这是有道理的。提前谢谢你。
【问题讨论】:
-
如果不是每个朋友的三行,而是每个朋友的三列,每列包含一张照片,是否可以接受?
-
并非如此。您指的是 GROUP_CONCAT 吗?
-
不,但我认为它可能有一行,例如
userid: 1, photo1_id: 200, photo1_date: 2009-10-01, photo2_id: 167, photo2_date: 2009-08-01, photo3_id: 120, photo3_date: 2009-06-01。每个朋友都有相似的行。 -
这太过分了,所以我想我会使用下面提供的多个查询选项。
标签: sql mysql social-networking