3个表左边加入任务,订单和客户,但无法获得

时间:2017-08-07 09:28:53

标签: mysql

案例研究如下,

  

任务表格有订单ID   1任务属于订单表。订单可以有很多任务。任务表没有客户ID信息。

     

订单表格中有客户ID   1订单属于客户表。客户可以有很多订单。

现在我想生成一个Task表来显示该任务属于哪个客户。 但是,我的结果是来自客户的列都是NULL。我确认我的customer_id存在。我可以在Tasks表中存储客户ID吗?由于订单表已存储客户信息。

select `tasks`.`id`, `tasks`.`created_date`, `tasks`.`due_date`, tasks.order_id, orders.id, orders.cust_id, 
customers.id, `customers`.`name`
from `tasks` 
left join `orders` on `tasks`.`order_id` = `orders`.`id` 
left join `customers` on `customers`.`name` = `orders`.`cust_id` 

这是我错过的吗?

2 个答案:

答案 0 :(得分:1)

您的查询已选择了costumer名称,但您尝试在costumer user_name上加入它。我建议您更改它们以更正列名(名称或用户名)并尝试这种方式。例如(我在编辑后将其与id匹配):

select `tasks`.`id`, `tasks`.`created_date`, `tasks`.`due_date`, tasks.order_id, orders.id, orders.cust_id, 
customers.id, `customers`.`name`
from `tasks` 
left join `orders` on `tasks`.`order_id` = `orders`.`id` 
left join `customers` on `customers`.`id` = `orders`.`cust_id` 

工作sql小提琴:http://sqlfiddle.com/#!9/5835fd1/2

答案 1 :(得分:1)

可能是您使用错误的列加入表格尝试使用user_id而不是用户名

  select 
      `tasks`.`id`
      , `tasks`.`created_date`
      , `tasks`.`due_date`
      , tasks.order_id, orders.id
      , orders.cust_id, 
  customers.id, `customers`.`name`
  from `tasks` 
  left join `orders` on `tasks`.`order_id` = `orders`.`id` 
  left join `customers` on `customers`.`user_id` = `orders`.`cust_id`