2012-01-11 2 views
4

Мне интересно, как выбрать один столбец дважды, используя внутренний хостинг другим способом. моя база данных - sqlite, и я использую драйвер PDO db.sql, sqlite SELECT с внутренним соединением

Мой пример:

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 

Я хочу получить также, в user_name который редактировал эту запись

  orders.edited_by = users.id 

Как присоединиться этот выбор?

ответ

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

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, опубликованном ранее ... –

Смежные вопросы