我拥有的内容:我有3个表格CONTENT_MASTER
,Account_Master
和Content_Licenses
。 Content_Licenses
表用于存储不同帐户的每个内容的许可证。例如,我有一个名为myOldContent
的内容,每个帐户都有以下许可证:
Table: Content_Licenses
CL_AccountID NoOfLicences
8 99
241 70
240 30
186 30
99 30
我想要的是什么: 对于以下内容,我想为每个帐户提供相同数量的许可证:
Table: CONTENT_MASTER
CM_ID CM_NAME
101 myNewContent1
102 myNewContent2
103 myNewContent3
我做了什么:我写了以下查询来执行此操作:
--Assign New components ID here and execute the query.
DECLARE @NewComponentID int
--Give license to new components
INSERT INTO CONTENT_LICENSES
(CL_CM_ID
,CL_AccountID
,NoOfLicences)
SELECT
@NewComponentID --Want to fetch from CONTENT_MASTER table, instead of passing like this
,CL.CL_AccountID --Fetching from CONTENT_LICENSES table
,CL.NoOfLicences
FROM CONTENT_LICENSES CL
INNER JOIN CONTENT_MASTER ON CM_ID = CL.CL_CM_ID
WHERE CM_NAME = 'myOldContent'
问题 我需要执行此查询3次,以便为3个新组件提供许可证(即通过分配新组件的ID并执行它)。有没有其他方法(不使用游标)?
答案 0 :(得分:1)
也许我仍然缺少一些东西,但到目前为止你似乎可以尝试这样的东西:
INSERT INTO CONTENT_LICENSES
(CL_CM_ID
,CL_AccountID
,NoOfLicences)
SELECT
CM_NEW.CM_ID
,CL.CL_AccountID
,CL.NoOfLicences
FROM CONTENT_LICENSES CL
INNER JOIN CONTENT_MASTER CM_OLD ON CM_OLD.CM_ID = CL.CL_CM_ID
CROSS JOIN CONTENT_MASTER CM_NEW
WHERE CM_OLD.CM_NAME = 'myOldContent'
AND CM_NEW.CM_NAME IN
('myNewContent1'
,'myNewContent2'
,'myNewContent3')