【问题标题】:Sql query to select several items from a another table in relation to values on a single row of a tableSql查询从另一个表中选择与表的单行上的值相关的多个项目
【发布时间】:2020-12-10 18:52:18
【问题描述】:
orderTb: **id_order** **qty** **id_user** **updatedby**
           1             5         2            1

userTb:  **id** **name**
           1      paul
           2      mark

这是我的两个表,希望通过 mysql 查询返回:id_order,qty,id_user 作为 name1,updateby 作为 name2。我试过这个查询但没有用:

select orderTb.id_order,orderTb.qty,userTb.name as name1,userTb.name as Name2 
from orderTb,userTb where orderTb.id_user=userTb.id OR 
orderTb.updatedby=userTb.id

【问题讨论】:

  • not working 不是错误描述。分享预期的结果和你得到的结果
  • 好的,下次我一定会显示错误。感谢您的评论

标签: mysql sql join select where-clause


【解决方案1】:

使用这个。

SELECT o.id_order, o.qty, u1.name as name1, u2.name as name2 
FROM orderTb o
INNER JOIN userTb u1 ON u1.id=o.id_user
INNER JOIN userTb u2 ON u2.id=o.updatedby;

在此处查看演示:DB-Fiddle

【讨论】:

    【解决方案2】:

    你必须加入userTb两次:

    select orderTb.id_order,orderTb.qty,user.name as name1,userUpdate.name as Name2 
    from orderTb user join userTb on orderTb.id_user=user.id 
    join userTb userUpdate on orderTb.updatedby=userUpdate.id
    

    【讨论】:

      【解决方案3】:

      您需要使用JOIN clause 来实现这一点。

      您将需要 2 个 JOIN 子句到 userTb:一个将 id_user 列与我们将称为 userTb1userTb 链接起来,一个将 updatedby 列与另一个 userTb 链接起来我们会打电话给userTb2

      SELECT orderTb.id_order, orderTb.qty, userTb1.name AS name1, userTb2.name AS Name2
      FROM orderTb
      INNER JOIN userTb userTb1 ON orderTb.id_user = userTb1.id
      INNER JOIN userTb userTb2 ON orderTb.updatedby= userTb2.id
      

      【讨论】:

        猜你喜欢
        • 2012-10-15
        • 2012-12-01
        • 2018-07-27
        • 1970-01-01
        • 2012-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多