我有三张这样的表
move
列(sales_bill
,id
,time
,user_id
)
branch_id
列(sales
,id
,bill_id
,quantity
)
item_id
列(sales_plus
,sales_id
,status
,time
,branch_id
)
其中sales_plus.status为枚举('add','remove'),原始帐单完成后可添加或删除一个项目,此表主键为sales_id和status
我需要选择具有特定bill_id的销售,但如果该项目已添加到帐单中,则只显示已删除的时间,branch_id和user_id
这是我能做的最好但是由于使用了ANY_VALUE,它可以返回添加的时间但是已删除状态
user_id
答案 0 :(得分:1)
我不是100%确定你的目标是什么,但看起来你正在寻找只有“最低”状态的销售。如果是这样,此查询应该完成这项工作:
select *
from
sales_bill, sales, sales_plus
where
bill_id = 0 and
sales_bill.id = sales.bill_id and
sales.id = sales_plus.sales_id and
sales_plus.status = (
select sp.status from sales_plus as sp where sp.sales_id = sales.id order by status limit 1
);