SQL,SQLite内部连接的SELECT查询

5

我想知道如何使用内联结或其他方式两次选择一个列。我的数据库是SQLite,我使用PDO数据库驱动程序。

我的示例:

    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个回答

10

您需要使用表别名。

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

非常简单和快速的回答,谢谢。"creator_user_name"之后缺少一个逗号。 - sulest

2

在您的表名中使用别名,以便您可以对同一张表进行多次引用。这也有助于使复杂的查询更易于阅读。

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

你可以使用任意数量的相同表格“实例”。

你需要在连接条件中使用表别名,就像我之前发布的SQL语句中一样... - David M

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接