2

我有三张桌子:

ITEMDISPLAYCOuNTS *此表存储谁显示了哪些帖子以及显示了多少次

postid, count, whodisplayedid

POSTS *此表存储了谁发布了什么?

postid, 谁发帖

ASPNET_USERS

用户名,用户名

最后我想要的是谁显示了谁的帖子,以及使用用户名而不是用户 ID 显示了多少次:

输出

用户名WhoDisplayed、用户名WhosePost、计数

我编写了以下代码,但它无法正常运行。

SELECT u1.UserName, u2.UserName, ItemDisplayCounts.Count
FROM ItemDisplayCounts AS i, Posts AS p, aspnet_Users AS u1, aspnet_Users AS u2
WHERE p.UserId = u2.UserId AND i.UserId = u1.UserId AND i.PostId = p.PostId

任何人都可以提出任何更正吗?

4

2 回答 2

3

我认为您想要这样的东西(将您的连接更改为正确的 ANSI 连接):

select
    iu.UserName as UserNameWhoDisplayed,
    pu.UserName as UserNameWhosePost,
    sum(i.Count) as [Count]
from ItemDisplayCounts as i
    inner join aspnet_Users as iu on iu.userid = i.whodisplayedid
    inner join posts as p on p.postid = i.postid
    inner join aspnet_Users as pu on pu.userid = p.whopostedid
group by
    iu.UserName,
    pu.UserName
于 2013-10-11T20:15:22.210 回答
1

如果我对您的理解正确,您不需要在查询中执行任何数学运算,因为您在表中有该count字段。ITEMDISPLAYCOuNTS所以,我相信这对你有用:

SELECT U2.username AS UserNameWhoDisplayed, 
       U1.username AS UserNameWhosePost, 
       ID.[Count]
FROM ((POSTS AS P 
       INNER JOIN ASPNET_USERS AS U1 ON P.whopostedid = U1.userid) 
       INNER JOIN ITEMDISPLAYCOuNTS AS ID ON P.postid = ID.postid) 
       INNER JOIN ASPNET_USERS AS U2 ON ID.whodisplayedid = U2.userid
于 2013-10-11T20:31:51.757 回答