2012-01-11 90 views
4

我想知道如何選擇一個列兩次使用內部聯接或其他方式。我的數據庫是sqlite和我使用PDO數據庫驅動程序。sql,sqlite選擇與內部聯接

我的例子:

SELECT 
      orders.id, 
      orders.order_number, 
      clients.first_name, 
      clients.last_name, 
      users.name AS user_name 
    FROM orders 

    INNER JOIN clients ON 
      orders.client_id = clients.id 

    INNER JOIN users ON 
      orders.created_by = users.id 

我還想得到,誰編輯這條記錄

  orders.edited_by = users.id 

如何加入這個選擇USER_NAME?

回答

8

您需要使用表別名。

SELECT 
     orders.id, 
     orders.order_number, 
     clients.first_name, 
     clients.last_name, 
     creator.name AS creator_user_name 
     editor.name AS editor_user_name 
FROM orders 

INNER JOIN clients ON 
     orders.client_id = clients.id 

INNER JOIN users creator ON 
     orders.created_by = creator.id 

INNER JOIN users editor ON 
     orders.edited_by = editor.id 
+0

如此簡單快速的答覆,謝謝。 「creator_user_name」後面缺少一個逗號。 – sulest 2012-01-11 15:48:02

1

在您的表名中使用aliases,因此您可以對同一個表使用多個引用。這也可以幫助大型查詢更容易閱讀。

SELECT 
     orders.id, 
     orders.order_number, 
     clients.first_name, 
     clients.last_name, 
     createUsers.name AS creator_name, 
     editUsers.name AS editor_name 
FROM orders 

INNER JOIN clients ON 
     orders.client_id = clients.id 

INNER JOIN users As createUsers ON 
     orders.created_by = users.id 

INNER JOIN users As editUsers ON 
     orders.edited_by = users.id 

您可以根據需要使用同一張表的多個「實例」。

+0

您還需要在連接條件中使用表別名,就像在之前發佈的SQL中一樣。 – 2012-01-11 15:40:56