这听起来令人困惑,但这个想法很简单。
我想获取具有默认费率的产品列表,但给定的“代理”没有费率。为此,我需要从下表中选择
t_Products
|-ProductID-|--Product-|
| 100 | Product1 |
| 101 | Product2 |
| 102 | product3 |
| 103 | product4 |
ID 存在于 t_Annual_DefaultCost 或 t_Daily_DefaultCost 中的位置
t_Annual_DefaultCost
|-DefaultID-|-ProductID-|--Cost-|
| 100 | 100 | 24.00 |
| 101 | 101 | 26.00 |
t_Daily_DefaultCost
|-DefaultID-|-ProductID-|--Cost-|-Days-|
| 100 | 100 | 24.00 | 1 |
| 101 | 100 | 26.00 | 2 |
| 102 | 102 | 22.50 | 2 |
| 103 | 102 | 97.50 | 8 |
但它不能存在于给定代理 ID 的 t_Annual_AgentCost 或 t_Daily_AgentCost
t_Annual_AgentCost
|---CostID--|-ProductID-|-AgentID-|--Cost-|
| 100 | 100 | 10001 | 24.00 |
| 101 | 100 | 10001 | 20.00 |
t_Daily_AgentCost
|---CostID--|-ProductID-|-AgentID-|--Cost-|-Days-|
| 100 | 100 | 10001 | 24.00 | 1 |
| 102 | 102 | 10002 | 35.00 | 2 |
所以对于 AgentID 10001 的最终结果应该是
|-ProductID-|--Product-|
| 101 | product2 |
| 102 | product3 |
对于 AgentID 10002,最终结果应该是
|-ProductID-|--Product-|
| 100 | product1 |
| 101 | product2 |
我目前正在使用以下代码来获取具有默认费率的产品列表。但我不知道如何删除/不获取 AgentCost 表中的那些。
Select
distinct a.*
from
t_Products as a
inner join
(
select
DefaultID ,ProductID
from
t_Daily_DefalutCost
union
select
DefaultID , ProductID
from
t_Annual_DefaultCost
)
as b on a.ProductID = b.ProductID