2015-05-21 121 views
-1

SQL master。SQL:連接兩個表兩次,右側同一列

在我的MySQL數據庫也有像表:

Users 
---------------------------- 
UserID | UserNickName | ... 
(PK) |    |  
---------------------------- 
1  | Lister  | ... 
2  | Rimmer  | ... 
3  | Kryten  | ... 
---------------------------- 

Events 
----------------------------------------------------------- 
EventID | EventCreatedByUserID | EventEdittedByUserID | ... 
(PK) | (FK Users.UserID) | (FK Users.UserID) | 
----------------------------------------------------------- 
1  | 1     | 2     | ... 
2  | 2     | 3     | ... 
----------------------------------------------------------- 

使用下面的查詢我可以選擇誰創建的事件事件條目和用戶暱稱:

SELECT EventID, ..., UserNickName 
FROM Events 
    JOIN Users 
     ON Users.UserID = Events.EventCreatedByUserID 

i.e. 
Event #1 | Lister 
Event #2 | Rimmer 

但如何將查詢選擇事件條目包括這兩個用戶的暱稱是誰創建和上次編輯的事件?

i.e. 
Event #1 | Lister | Rimmer 
Event #2 | Rimmer | Kryten 

謝謝你的幫忙。

回答

3

剛剛鏈中的連接在一起。儘管您使用過兩次,但您必須在用戶表上創建別名。

SELECT EventID, ..., CreateUser.UserNickName, EditUser.UserNickName 
FROM Events 
JOIN Users CreateUser 
ON CreateUser.UserID = Events.EventCreatedByUserID 
JOIN Users EditUser 
ON EditUser.UserID = Events.EventEditedByUserID 
0

什麼:

SELECT e.*, u1.UserNickName AS createdBy, u2.UserNickName AS EditedBy 
    FROM Events e 
    LEFT JOIN Users u1 ON e.EventCreatedByUserID=u1.UserID 
    LEFT JOIN Users u2 ON e.EventEdittedByUserID=u2.UserID 
    WHERE ... your additional clauses