我想知道MySQL中Full Outer Join的替代方案。我知道这可以通过联合来完成,但它不起作用,因为我的要求并不复杂,我希望如此。我有两个表 master(branch_id,purchase_mindate,purchase_billvalue) 和 transfer(branch_id,tra_gtr_date,tra_travalue) ,其中两个 id 字段几乎相同。现在我需要通过将两个表与条件连接来获取值id,sum(billvalue),sum(travalue)
- Mindate=当前日期
- Gtrdate=当前日期
- 如果主表没有任何值但传输表包含,则必须包含传输的值
- 如果 master 的 table 包含 value 但 transfer 没有,则必须显示 master 的 value。
我尝试了联合、加入等,但没有任何帮助我知道我在某处做错了什么,但我无法确定请帮助我。
我使用了以下查询,
select purchase_master.branch_id, sum(purchase_billvalue) as billvalue, sum(tra_value) as travalue
from purchase_master
join purchase_transfer on purchase_master.branch_id=purchase_transfer.branch_id
where purchase_mindate=CURDATE() and tra_gtr_date=CURDATE()
group by branch_id
仅当两个表包含当前日期时我才会获得值,但如果一个表有而另一个表没有,我不会获得任何值
我附上了表格的屏幕截图。
主表
转移表
我尝试了以下查询,但结果为空,
select pm.branch_id,pm.purchase_billvalue, pt.tra_value from purchase_master as pm
left outer join purchase_transfer as pt on pm.branch_id=pt.branch_id
where pm.purchase_mindate=CURDATE() and pt.tra_gtr_date=CURDATE()
union
select pm.branch_id,pm.purchase_billvalue, pt.tra_value from purchase_master as pm
right outer join purchase_transfer as pt on pm.branch_id = pt.branch_id
where pm.purchase_mindate=CURDATE() and pt.tra_gtr_date=CURDATE()
我需要结果为 sum(billvalue) sum(travalue) group by branch_id,
- 如果两个表包含 currentdate 数据
- 如果任何一个包含 currentdate 数据