[英]Two inner joins with same tables
我有这个问题,我已经工作了一段时间,我只是无法弄清楚我的查询有什么问题。 今天,我终于离得更近了,现在我觉得我很接近并且离成功不太远,但是我需要你的帮助才能发现这个问题中的错误,因为我觉得我已经瞎了眼。 这是我得到的错误:
“FROM子句中的对象”webpages_UsersInRoles“和”webpages_UsersInRoles“具有相同的公开名称。使用相关名来区分它们。”
SELECT * FROM Users
INNER JOIN webpages_UsersInRoles
ON webpages_UsersInRoles.UserId = Users.UserId
INNER JOIN webpages_UsersInRoles
ON webpages_UsersInRoles.RoleId = webpages_Roles.RoleId
WHERE Users.UserId = 1
先感谢您!
您必须为表使用alisas:
SELECT * FROM Users
INNER JOIN webpages_UsersInRoles w1 ON w1.webpages_UsersInRoles.UserId = Users.UserId
INNER JOIN webpages_UsersInRoles w2 ON w1.webpages_UsersInRoles.RoleId = w2.webpages_Roles.RoleId
WHERE Users.UserId = 1
我认为以下是您需要的最终查询。 为了清楚起见,我使用别名为TAB1,TAB2 and TAB3
,以避免混淆。 根据需要进行更改。
SELECT * FROM Users TAB1
INNER JOIN webpages_UsersInRoles TAB2
ON TAB2.UserId = TAB1.UserId
INNER JOIN webpages_Roles TAB3
ON TAB2.RoleId = TAB3.RoleId
WHERE TAB1.UserId = 1
Btw,JUST FOR INFO ....可能你得到The objects "webpages_UsersInRoles" and "webpages_UsersInRoles" in the FROM clause have the same exposed names. Use correlation names to distinguish them.
“ The objects "webpages_UsersInRoles" and "webpages_UsersInRoles" in the FROM clause have the same exposed names. Use correlation names to distinguish them.
”从原始查询中提到的行中的错误:
SELECT * FROM Users
INNER JOIN webpages_UsersInRoles
ON webpages_UsersInRoles.UserId = Users.UserId
INNER JOIN webpages_UsersInRoles
ON webpages_UsersInRoles.RoleId -----> Not able to identify which webpages_UsersInRoles is being called (First inner join or second inner join)
= webpages_Roles.RoleId
WHERE Users.UserId = 1
我看到3个表... Users
, webpages_UsersInRoles
和webpages_Roles
只有2个被叫。
webpages_Roles
??
也许在第二次加入中使用webpages_Roles
:
SELECT * FROM Users
INNER JOIN webpages_UsersInRoles
ON webpages_UsersInRoles.UserId = Users.UserId
INNER JOIN webpages_Roles
ON webpages_UsersInRoles.RoleId = webpages_Roles.RoleId
WHERE Users.UserId = 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.