以下是我正在使用的数据集的示例.我正在尝试编写一个查询,允许我从items表中请求一行,并在users表中显示User Name来代替用户id:
Table 1 - users table
User ID | User Name
--------------------
12 | Fred
13 | Ted
14 | Ned
Table 2 - items Table
Item ID | Submitted User | Assigned User
----------------------------------------
234 | 12 | 14
345 | 12 | 13
456 | 14 | 12
Run Code Online (Sandbox Code Playgroud)
这是我能得到的,它返回一个正确标记的用户名:
SELECT users.[user name] AS [Submitted User] FROM items
JOIN users ON items.[Assigned User] = users.[User ID]
WHERE items.[Item ID] = '234'
Run Code Online (Sandbox Code Playgroud)
这个问题是,当一个字段工作时,我需要同时获得提交的用户和分配的用户.我试图在一个查询中做到这一点......我有一种感觉它可以做到,但我只是不确切知道如何.如果我尝试多次分配字段,我会收到关于相关性的错误.这是我尝试的一个示例,它给出了一个相关错误:
SELECT users.[user name] AS [Submitted User], users.[user name] AS [Assigned User] FROM items
JOIN users ON items.[Submitted User] = users.[User ID]
JOIN users ON items.[Assigned User] = users.[User ID]
WHERE items.[Item ID] = '234'
Run Code Online (Sandbox Code Playgroud)
这正是我想要做的:
SELECT
items[Submitted User].users.[user name] AS [Reported User],
items[Assigned User].users.[user name] AS [Assigned User]
WHERE items.[Item ID] = '234'</pre>
Run Code Online (Sandbox Code Playgroud)
这是我想要得到的回应:
Submitted User | Assigned user
Fred - Ted
Run Code Online (Sandbox Code Playgroud)
您想为JOIN表添加别名,以便可以连接两次.见下文:
SELECT
submitted.[user name] AS [Submitted User],
assigned.[user name] AS [Assigned User]
FROM items
LEFT JOIN users submitted ON items.[Submitted User] = submitted.[User ID]
LEFT JOIN users assigned ON items.[Assigned User] = assigned.[User ID]
WHERE items.[Item ID] = '234'
Run Code Online (Sandbox Code Playgroud)
其他一些建议:
| 归档时间: |
|
| 查看次数: |
176 次 |
| 最近记录: |