TSQL - 插入多个没有连接的数据集

时间:2017-02-16 16:07:58

标签: sql-server sql-server-2008 tsql stored-procedures

我正在处理存储过程并尝试思考这个场景。

我允许用户选择PK ID crossjoin的多个文档。然后,他们可以从列表中选择多个名称以分配给这些文档。

我正在试图弄清楚如何说出"为这些文件中的每一个插入此人员列表"。

我尝试为两个数据集创建临时表,然后使用-- Create a temp tables to hold our data DECLARE @documents AS TABLE(documentID INT) DECLARE @users AS TABLE(UID VARCHAR(10), contactType VARCHAR(50)) -- Insert our documents INSERT INTO @documents( documentID ) SELECT ParamValues.x1.value('docID[1]', 'INT') FROM @xml.nodes('/root/data/documents/document') AS ParamValues(x1); -- Insert our users INSERT INTO @users( UID, contactType ) SELECT ParamValues.x1.value('UID[1]', 'varchar(10)'), ParamValues.x1.value('contactType[1]', 'varchar(50)') FROM @xml.nodes('/root/data/users/user') AS ParamValues(x1) -- Do we user contact data to insert? IF EXISTS (SELECT * FROM @users) BEGIN -- Insert our users INSERT INTO dbo.DocumentContacts ( documentID, UID, contactLevel ) SELECT documentID, u.UID, u.contactType FROM @documents CROSS JOIN @users AS u END ,但只插入了一个集合,所以我假设我做错了。

FK

发送的数据是一个XML字符串,这些ID被放入临时表中。

由于用户和文档之间没有dbo.DocumentContacts,我还能如何加入这些数据?

示例:

  • 文件临时表 - 22,33,44,55
  • 用户临时表 - 1,2,3,4

对于每个文档ID,最终结果应该将记录插入到我的表{{1}}中,如下所示:

  • (文件22,用户1)
  • (文件22,用户2)
  • (文件22,用户3)
  • (文件22,用户4)
  • (文件33,用户1)

.....

0 个答案:

没有答案