Mysql中使用Case减去价格
P粉627136450
P粉627136450 2024-04-05 11:18:53
0
1
505

我有 3 个表:training_schedules、training_discounts 和代理。 training_schedules:id、名称、agent_id、价格。 training_discounts:id、agent_id、schedule_id、折扣。 代理:ID、姓名

我尝试使用training_discounts表中的折扣列从training_schedules表中减去价格,如下所示:

SELECT ts.id, name, training_types, DATE_FORMAT(date_start ,'%d/%m/%Y') as date_start, 
                DATE_FORMAT(date_end ,'%d/%m/%Y') as date_end, quota, price, td.discount,
                CASE price WHEN td.agent_id = 2  THEN (price - td.discount) ELSE price END as total   
                FROM training_schedules ts
                LEFT JOIN training_discounts td on ts.id = td.schedule_id GROUP BY td.schedule_id;

但不对,即使agent_id相同,总列的价格仍然与之前相同。我的查询可能有什么问题?如果需要的话,这是 SQLfiddle:http://sqlfiddle.com/#!9/0cd42d/1/0

P粉627136450
P粉627136450

全部回复(1)
P粉111927962

您不需要使用group by,因为您没有使用任何聚合函数。

SELECT ts.id
  , name
  , training_types
  , DATE_FORMAT(date_start ,'%d/%m/%Y') as date_start
  , DATE_FORMAT(date_end ,'%d/%m/%Y') as date_end
  , quota, price
  , td.discount  
  , CASE WHEN td.agent_id = 2 THEN price - td.discount ELSE price END as total   
FROM training_schedules ts
LEFT JOIN training_discounts td on ts.id = td.schedule_id;

您还错误地使用了select case。另一种选择是使用 mysql if() 函数。

if(agent_id = 2, price - td.discount, price) as total
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板