表
交易 t
交易类型 | 交易名称 |
---|---|
销售 | 一 |
销售 | 二 |
销售
姓名 | 数量 |
---|---|
一 | 10.0 |
二 | 5.0 |
购买 p
姓名 | 数量 |
---|
通缉
交易类型 | 交易名称 | 数量 |
---|---|---|
销售 | 一 | 10.0 |
销售 | 二 | 5.0 |
试过了
select t.transaction_type, t.transaction_name, s.amount, p.amount
from transactions t
left join sales s on t.transaction_type='sale' and t.transaction_name=s.name
left join purchases p on t.transaction_type='purchase' and t.transaction_name=p.name
得到
交易类型 | 交易名称 | 数量 |
---|---|---|
销售 | 一 | 无效的 |
销售 | 二 | 无效的 |
我知道由于公共字段的原因,购买的外部连接会覆盖销售金额,但在这种情况下最好的方法是什么?
请注意,将有更多的表像这样加入。这是 mysql 以防万一,查询已被解释并且有一个 orm 包装器。
我知道我可以通过单独的查询、内部连接和联合来做到这一点,这是最好的吗?我希望在一个查询中做到这一点。
蒂亚!
您可以使用 Coalesce 显示 s.amount 或 p.amount 哪个不为空:
询问:
创建架构:
检查 db-fiddle 链接: https ://www.db-fiddle.com/#&togetherjs=E7luJAKsF5