提问者:小点点

需要查找sql表中某一组订单id对应的发货id的计数,但查询有错误


我有sales_order表

entity_id state    created_at
1         success  2020-05-01
2         fail     2020-05-01
3         success  2020-05-01
4         success  2020-05-01
5         process  2020-05-01
6         process  2020-05-01
7         process  2020-05-01
8         fail     2020-05-01
9         fail     2020-05-01

和sales_shipment表

entity_id order_id   
1         1
2         1
3         2
4         2
5         3
6         4
7         4
8         4
9         5
10        6
11        6
12        6
13        6
14        7
15        7
16        8
17        9
18        9
19        9
20        9    

我想从sales_shipment表中找出entity_id的计数,它对应于sales_order表中的success和process state orders

预期产出

Count
13

当我运行以下查询时,我没有得到所需的输出

select `entity_id` as tem, count(*) as cntsid  
from `sales_order` a 
inner join `sales_shipment` b on a.`entity_id`= b.`order_id`
where (`state` = 'success' or  `state` = 'process')  
group by tem

相反,我得到了

Column 'entity_id' in field list is ambiguous

请帮助处理此查询


共1个答案

匿名用户

您需要在第一行中为entity_id添加表名或别名,在本例中我添加了a.。 否则,引擎不知道要使用哪一列(查询中有两列entity_id)。

您的查询应如下所示:

select a.`entity_id` as tem, count(*) as cntsid  
from `sales_order` a 
inner join `sales_shipment` b on a.`entity_id`= b.`order_id`
where (b.`state` = 'success' or b.`state` = 'process')  
group by tem