我正在创建一个数据库来管理办公室计算机的办公室许可。我们经常重新映像它们并且必须跟踪我们使用的密钥。
我有三张桌子; LicenseKeyTB,SeatsAvailableTB和ProductTB。 ProductTB包含产品名称和唯一密钥。一个产品将有多个许可证密钥。
许可证密钥表将包含许可证密钥,对productTB的引用以及对SeatsAvailableTB的引用。
有一定数量的座位可用于一组许可证密钥。例如。对于Office 2010和Office 2013,我们有10个席位可用于2个不同的许可证密钥。因此,我们可以提供6个2010年许可证和4个2013年许可证,反之亦然,但我们不能超过10个。
我需要为每个产品选择第一个许可证密钥,并提供一定数量的席位。
就我而言:
*|USERNAME|*
此语句选择每个产品的第一个许可证密钥。我需要的是选择产品名称,第一个许可证密钥和座位可用的座位数至少一定数量。
答案 0 :(得分:1)
也许加入SeatsavaibleTB?
GO
select
*
from RX.ProductTB p
JOIN(
SELECT l.*,
row_number() over (Partition By l.ProductID Order By l.ProductID) as Ranking
From RX.LicenseKeyTB l
join RX.SeatsAvailableTB s ON l.reference = s.id
WHERE s.number > 0
) as LicenseRanking
on LicenseRanking.ProductID = p.ProductID and LicenseRanking.Ranking = 1
GO
这样,排名1的ProductID将具有SeatsAvailableTB.number> 0