0

Requests、Users、UserRequests の 3 つのテーブルがあります。

リクエスト: - ID - Submit_ID - Assign_ID - Completed_ID

ユーザー: - ID - ユーザー名

UserRequest: - ID - Request_ID - User_ID

各リクエストには、リクエストが送信され、割り当てられ、完了したユーザーとは異なるユーザーがいます。次の出力を試みています。

リクエスト ID | 割り当てられたユーザー名 | 送信者のユーザー名 | 完了のユーザー名

これは間違った方法ですか?

4

2 に答える 2

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  

上記では、列のエイリアスを指定するためにバックティックが使用されていることに注意してください。MySQL を使用していない場合は、おそらく Oracle に二重引用符を使用する必要があります (別の種類のデータベースを使用している場合は、別の文字を使用する必要があります)。

于 2013-06-14T17:24:07.960 に答える