2012-01-11 95 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