您好我有以下表格
用户(id是主键/自动增量)
id | alias | name ---------------------------------- 1 |Joe |Joe Anderson 2 |TG |Tegu Kuan 3 |Peter |Peter Neil 4 |Nicol |Clin Nicol
图像(id是主键/自动增量.images.user表示users.id)
id | image | user ---------------------------------- 1 |125.jpg |1 2 |126.jpg |1 3 |127.jpg |2 4 |128.jpg |3
feed(id是主键/自动增量.feed.user表示users.id)
id | title | user ---------------------------------- 1 |-some text a-|1 2 |-some text b-|2 3 |-some text c-|3 4 |-some text d-|3
我想在以下条件中加入这3个表
feed
)。输出应该是这样的
alias | image | title ---------------------------------- Peter |128.jpg |-some text d- Peter |128.jpg |-some text c- TG |127.jpg |-some text b- Joe |126.jpg |-some text a-
请帮我写这个查询。
答案 0 :(得分:0)
问题在于,图像和Feed表都没有超出您显示顺序的“最后”概念。我不知道如何以一般方式决定给定用户使用哪一个。
您的用户1有图像125.jpg和126.jpg。你打算继续这个计划吗?如果插入名为“some-random-image.jpg”的图像会发生什么?相对于你现在生效的两个命令,它的顺序是什么?
如果图像和标题都有时间戳来指示生效日期,那么这是一个微不足道的问题。如果确实如此,您可以根据最新生效日期选择每一个。
在这种情况下,您可以编写带有两个JOIN和几个子选择的SELECT来选择给定日期的生效日期。
查询看起来像这样:
SELECT U.ID, U.ALIAS, I.IMAGE, F.TITLE
FROM USERS AS U
JOIN IMAGES AS I
ON U.ID = I.USER
JOIN FEED AS F
ON U.ID = F.USER
GROUP BY U,ID
添加WHERE子句以根据需要选择“最新”。