我正在尝试编写一个 SQL 查询来计算许可证的价格。请检查以下架构:
表:价格
| ID (bigint) | USERS(Bigint) | TYPE (varchar) | PRICE (BIGINT)
------------------------------------------------------------------
| 1 | 1 | other | 20 |
| 2 | 15 | local | 13.96 |
表:许可证
| ID (bigint) | USERID (Bigint) |STATUS(VARCHAR) | USERS(bigint) | DEVICES(BIGINT) | TYPE(VARCHAR) | REQUEST_TYPE (VARCHAR) |
--------------------------------------------------------------------------------------------------------------
| 1 | 13 | 10 | 10 | local | add |
| 2 | 13 | 15 | 20 | other | extend |
我的目标:
给定用户 ID 和类型,我想根据以下标准计算所有许可证的总价格:
对于给定的用户 ID 和类型:
1) 获取所有 request_type 为 new(或)extend 的许可证
2) 对于每个这样的许可证,将用户数(USERS 列)与“prices”表中的 USERS 列匹配,并作为设备进行计算*(价格表中的相关价格)
3) 使用此计算所有此类价格的总和并返回总价格。
我试图通过使用以下查询来做到这一点,但我还没有成功:
SELECT SUM(PRICE) FROM prices
LEFT OUTER JOIN licenses
ON (
prices.users=licenses.users
AND prices.type=licenses.type
)
WHERE licenses.userid=13
AND licenses.status='approved'
AND licenses.request_type IN ('add','extend')
请在此处查看 SQL Fiddle:http ://sqlfiddle.com/#!2/05f5cf
请帮忙。
谢谢,大卫