为什么Inner Join in MySQL会返回不相关的信息?

时间:2016-04-03 21:45:07

标签: php mysql inner-join where-clause concat

我的数据库中有两个表,其中一个是order,另一个是user

我想提取订单的信息以及订单的关联用户,为此,我使用INNER JOIN加入用户名称上的两个表。

然而,问题在于,它提出了正确的订单信息,但用户不是相关用户,而是数据库中的第一个用户记录。

为什么世界会发生这种情况?

这是我的问题:

    SELECT orders.oid, 
           orders.ordernumber, 
           orders.date_requested, 
           orders.date_approved, 
           orders.status, 
           orders.region, 
           orders.users_name, 
           orders.comments, 
           orders.customShippingAddress, 
           orders.approval_comments, 
           orders.approved_by_id, 
           users.firstname, 
           users.lastname, 
           users.address, 
           users.address2, 
           users.city, 
           users.`state`, 
           users.zip, 
           users.phonenum, 
           users.cellnum, 
           users.officenum, 
           users.region, 
           users.shipping_address 
      FROM orders 
INNER JOIN users 
        ON orders.users_name=users.firstname + ' ' + users.lastname
     WHERE orders.oid='$id'";

我不明白为什么这不起作用。有人可以给我一些方向吗?

1 个答案:

答案 0 :(得分:4)

我猜你想要

ON orders.users_name=CONCAT(users.firstname ,' ',users.lastname)

您的版本

ON orders.users_name=users.firstname + ' ' + users.lastname

可能会做一些尝试添加内容的转换,+在sql server中连接,而不是mysql