如何将多个输入 id 传递到存储过程并获取具有所有输入 id 的 id?

庆都

我的目标是当用户选择产品时,应用程序将导出提供这两种产品的供应商。但是,如果我使用存储过程,则输入必须是固定值,因此我不能像 C# 那样放置 listId。

那么,我如何才能将 Id 列表放入商店,并且我已经生成了添加的 productId 的供应商业务 ID。见我的下表,InventoryOfSentoIdProductId

在此处输入图片说明

  • 如果输入为 1,则输出为供应商 ID 1 和 3
  • 如果输入是 2, 3 则输出是供应商 ID 3
乔纳森·威尔科克

如果您使用的是 SQL Server 2014,则很容易创建您自己的拆分函数。我使用的是以下(但你可以谷歌搜索更有效的其他人,特别是如果你的名单很长):

create FUNCTION [dbo].[fnSplit](
@sDelimiter VARCHAR(5) -- delimiter that separates items
  , @sInputList VARCHAR(max) -- List of delimited items
) RETURNS @List TABLE (item VARCHAR(max))

BEGIN
DECLARE @sItem VARCHAR(max)
WHILE CHARINDEX(@sDelimiter,@sInputList,0) <> 0
 BEGIN
 SELECT
  @sItem=RTRIM(LTRIM(SUBSTRING(@sInputList,1,CHARINDEX(@sDelimiter,@sInputList,0)-1))),
  @sInputList=RTRIM(LTRIM(SUBSTRING(@sInputList,CHARINDEX(@sDelimiter,@sInputList,0)+LEN(@sDelimiter),LEN(@sInputList))))

 IF LEN(@sItem) > 0
  INSERT INTO @List SELECT @sItem
 END

IF LEN(@sInputList) > 0
 INSERT INTO @List SELECT @sInputList -- Put the last item in
RETURN
END

然后,您将能够通过以下方式实现您想要的:

declare @demo table (SupplierID int, InventoryOfSentoID int)
declare @list varchar(10) = '2,3'
declare @ids table (SentoID int)
declare @cnt int

INSERT INTO @demo VALUES (1,1),(1,2),(2,5),(3,3),(3,2),(3,1)

INSERT INTO @ids 
SELECT * FROM dbo.fnSplit(',',@list)

SELECT @cnt = COUNT(*) FROM @ids

SELECT SupplierID FROM @demo d
INNER JOIN  @ids i
ON i.SentoID = d.InventoryOfSentoID
GROUP BY SupplierID
HAVING COUNT(*) = @cnt 

作为解释,请注意HAVING限制的使用这是为了确保只返回提供列表中所有元素的那些供应商。如果您没有此限制,则结果集将包含供应商 ID 1,从您的问题中我假设您想排除该 ID。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

获取所有具有div中随机ID的输入

来自分类Dev

如何将每个div的输入值乘以相同的id

来自分类Dev

如何将 css 应用于带 ID 的输入?

来自分类Dev

通过输入获取ID并重定向到具有此ID的页面

来自分类Dev

如何将Hammer.js绑定到多个ID

来自分类Dev

如何获取没有ID的输入值

来自分类Dev

如何获取存储过程的ID?

来自分类Dev

获取具有最高数值的输入元素的输入id

来自分类Dev

jQuery,获取输入ID

来自分类Dev

如何将项目ID传递给Swipeable以删除或编辑具有该ID的项目

来自分类Dev

JavaScript / Jquery:具有多个id的多个输入值

来自分类Dev

解析HTML文档获取具有ID和值的所有输入字段

来自分类Dev

返回具有输入ID的列值

来自分类Dev

如何将具有特定ID的数据传递到后端路由参数?

来自分类Dev

获取包含类的输入框的所有ID

来自分类Dev

从具有动态ID的输入字段获取jquery内的值

来自分类Dev

JQuery:如何访问具有相同ID的多个输入的特定文本输入?

来自分类Dev

$[id*= ] 具有多个元素

来自分类Dev

获取具有多个值的 id

来自分类Dev

如何将 id 和 value 从 cakePHP 中的输入表单传递给控制器?

来自分类Dev

将所有输入ID和值推入JSON数组

来自分类Dev

从输入中提取ID

来自分类Dev

JavaScript变量输入ID

来自分类Dev

输入所选ID的值

来自分类Dev

动态生成输入的 Id

来自分类Dev

SQL查询以从多个输入获取ID

来自分类Dev

SQL查询以从多个输入中获取ID

来自分类Dev

在jQuery中处理多个ID并仅更新相同ID的输入

来自分类Dev

如何获取具有特定ID的记录?