Php 将一个表一列连接到另一个表多列

Php 将一个表一列连接到另一个表多列,php,mysql,database,Php,Mysql,Database,我试着搜索了很多例子,但是我的例子有点复杂,因为我有很多专栏。以下是一个简化版本: 使用者 类型 计算机 +------+--------+-------------------+------------------+--------------------+--------------------+ | pcid | typeid | bought_by_user_id | assigned_user_id | created_by_user_id | updated_by_user_id |

我试着搜索了很多例子,但是我的例子有点复杂,因为我有很多专栏。以下是一个简化版本:

使用者

类型

计算机

+------+--------+-------------------+------------------+--------------------+--------------------+
| pcid | typeid | bought_by_user_id | assigned_user_id | created_by_user_id | updated_by_user_id |
+------+--------+-------------------+------------------+--------------------+--------------------+
| 1    | 2      | 1                 | 3                | 1                  | 3                  |
+------+--------+-------------------+------------------+--------------------+--------------------+
| 2    | 1      | 2                 | 2                | 2                  | 2                  |
+------+--------+-------------------+------------------+--------------------+--------------------+
| 3    | 1      | 3                 | 2                | 3                  | 1                  |
+------+--------+-------------------+------------------+--------------------+--------------------+
我想要达到的结果是

+------+---------+----------------+---------------+-----------------+-----------------+
| pcid | type    | bought_by_user | assigned_user | created_by_user | updated_by_user |
+------+---------+----------------+---------------+-----------------+-----------------+
| 1    | Desktop | Tom            | Harry         | Tom             | Harry           |
+------+---------+----------------+---------------+-----------------+-----------------+
| 2    | Laptop  | Dick           | Dick          | Dick            | Dick            |
+------+---------+----------------+---------------+-----------------+-----------------+
| 3    | Desktop | Harry          | Dick          | Harry           | Tom             |
+------+---------+----------------+---------------+-----------------+-----------------+
我尝试过使用多个ONs,如下所示:

SELECT * FROM computers
LEFT JOIN types ON computers.typeid = types.typeid
LEFT JOIN users
ON users.userid = computers.bought_by_user_id
ON users.userid = computers.assigned_user_id
ON users.userid = computers.created_by_user_id
ON users.userid = computers.updated_by_user_id 

但那没用。。。Halp?

您需要对
用户
表进行多个连接:

SELECT 
    computers.pcid,
    types.typename,
    bought.username as bought_by_user,
    assigned.username as assigned_by_user,
    created.username as created_by_user,
    updated.username as updated_by_user
FROM computers
LEFT JOIN types ON computers.typeid = types.typeid
LEFT JOIN users bought ON computers.bought_by_user_id = bought.userid
LEFT JOIN users assigned ON computers.assigned_by_user_id = assigned.userid
LEFT JOIN users created ON computers.created_by_user_id = created.userid
LEFT JOIN users updated ON computers.updated_by_user_id = updated.userid

对于
computers
表中的四个用户列中的每一列,您都要对用户表进行单独的联接。每个联接表都有不同的别名,因此在select语句中,您可以访问联接表的任何列值。

您需要对
用户
表进行多个联接:

SELECT 
    computers.pcid,
    types.typename,
    bought.username as bought_by_user,
    assigned.username as assigned_by_user,
    created.username as created_by_user,
    updated.username as updated_by_user
FROM computers
LEFT JOIN types ON computers.typeid = types.typeid
LEFT JOIN users bought ON computers.bought_by_user_id = bought.userid
LEFT JOIN users assigned ON computers.assigned_by_user_id = assigned.userid
LEFT JOIN users created ON computers.created_by_user_id = created.userid
LEFT JOIN users updated ON computers.updated_by_user_id = updated.userid

对于
computers
表中的四个用户列中的每一列,您都要对用户表进行单独的联接。每个联接表都有不同的别名,因此在select语句中,您可以访问联接表的任何列值。

您需要对
用户
表进行多个联接:

SELECT 
    computers.pcid,
    types.typename,
    bought.username as bought_by_user,
    assigned.username as assigned_by_user,
    created.username as created_by_user,
    updated.username as updated_by_user
FROM computers
LEFT JOIN types ON computers.typeid = types.typeid
LEFT JOIN users bought ON computers.bought_by_user_id = bought.userid
LEFT JOIN users assigned ON computers.assigned_by_user_id = assigned.userid
LEFT JOIN users created ON computers.created_by_user_id = created.userid
LEFT JOIN users updated ON computers.updated_by_user_id = updated.userid

对于
computers
表中的四个用户列中的每一列,您都要对用户表进行单独的联接。每个联接表都有不同的别名,因此在select语句中,您可以访问联接表的任何列值。

您需要对
用户
表进行多个联接:

SELECT 
    computers.pcid,
    types.typename,
    bought.username as bought_by_user,
    assigned.username as assigned_by_user,
    created.username as created_by_user,
    updated.username as updated_by_user
FROM computers
LEFT JOIN types ON computers.typeid = types.typeid
LEFT JOIN users bought ON computers.bought_by_user_id = bought.userid
LEFT JOIN users assigned ON computers.assigned_by_user_id = assigned.userid
LEFT JOIN users created ON computers.created_by_user_id = created.userid
LEFT JOIN users updated ON computers.updated_by_user_id = updated.userid

对于
computers
表中的四个用户列中的每一列,您都要对用户表进行单独的联接。每个联接表都有一个不同的别名,因此在select语句中,您可以访问联接表的任何列值。

感谢您的回答,它成功了!所以给他们不同的别名是关键。谢谢你的回答,这很有效!所以给他们不同的别名是关键。谢谢你的回答,这很有效!所以给他们不同的别名是关键。谢谢你的回答,这很有效!所以给他们不同的别名是关键。