sql, sqlite SELECT с внутренним соединением - PullRequest
4 голосов
/ 11 января 2012

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

Мой пример:

    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

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

Ответы [ 2 ]

9 голосов
/ 11 января 2012

Вам нужно будет использовать псевдонимы таблиц.

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
1 голос
/ 11 января 2012

Используйте псевдонимы в именах таблиц, чтобы вы могли использовать несколько ссылок на одну и ту же таблицу.Это также может облегчить чтение больших запросов.

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

Вы можете использовать столько «экземпляров» одной и той же таблицы, сколько пожелаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...