0

我有三个表:Requests、Users 和 UserRequests。

请求: - ID - Submit_ID - Assign_ID - Completed_ID

用户: - ID - 用户名

UserRequest: - ID - Request_ID - User_ID

每个请求都有一个不同的用户,而不是提交、分配和完成的请求。我正在尝试以下输出:

请求.ID | 分配的用户名 | 提交的用户名 | 完成的用户名

我要这样做是错误的方式吗?

4

2 回答 2

1

不明白 UserRequest 的目的,但您的预期输出如下:

SELECT
    r.ID,
    us.UserName,
    ua.UserName,
    uc.UserName
FROM
    Requests r
    JOIN Users us 
    ON r.Submit_ID = us.ID
    JOIN Users ua
    ON r.Assign_ID = ua.ID
    JOIN Users uc
    ON r.Complete_ID = uc.ID
于 2013-06-14T17:20:28.957 回答
1

您可以通过为 User 表为每个连接提供不同的别名来执行您的要求(多个一对多连接),如下所示:

SELECT  
    Requests.ID AS `Request.ID`,  
    AssignUser.UserName AS `Username of Assigned`,  
    SubmitUser.UserName AS `Username of Submitted`,  
    CompleteUser.UserName AS `Username of Completed`  
FROM  
    Requests  
JOIN User AS AssignUser ON  
    Requests.Assign_ID = AssignUser.ID  
JOIN User AS SubmitUser ON  
    Requests.Submit_ID = SubmitUser.ID  
JOIN User AS CompleteUser ON  
    Requests.Completed_ID = CompleteUser.ID  

Note that the back ticks are used above for specifying the column aliases. If you aren't using MySQL, you would probably have to use double-quotes for Oracle (or a different character if you are using a different kind of database).

于 2013-06-14T17:24:07.960 回答