案例研究如下,
任务表格有订单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`
这是我错过的吗?
答案 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`