日期:2014-05-16  浏览次数:20413 次

为实现GridView嵌套,相关的SQL查询,遇到坎了,求各位指点!
本帖最后由 u012992506 于 2014-03-12 17:30:46 编辑
我要实现商品组合功能,“Id”是商品Id,"CombinationDetail"字段存储的是这个组合所包含的其它商品Id,并且不能包含商品本身,现在我想把此商品所包含的组合商品信息带出来,也就是说,我怎么逐步把里面的ID值取出来并且实现相关查询,求问怎么实现?
用SQL,或者C#与SQL结合使用都行,只要能解决!

信息如图




select  b.Id, b.CombinationDetail
from [dbo].[T_ERP_Item] a  
INNER JOIN [dbo].[T_ERP_Sku] b ON b.ItemOuterId = a.OuterId  and b.Active = 1 
WHERE b.Id = 6677


此段代码只查出了此商品的信息,后面我就为难了
在线等答案啊!
------解决方案--------------------
将CombinationDetail的值取出或绑定在一个隐藏域控件中,当外层的行绑定事件中写代码获取当前行的隐藏域控件值并按“,”分割字符串,并循环SQL查询每一个ID(如果我理解你意思正确的话应该差不多这个思路)。
------解决方案--------------------
引用:
Quote: 引用:

分两步取是最简单的办法


比如说?


获取所有被关联的记录ID
select left(CombinationDetail,len(CombinationDetail)-1) as CombinationDetail
From
 (Select (select cast(CombinationDetail as nvarchar),',' from T_ERP_Item Where isnull(CombinationDetail,'')<>'' FOR XML PATH('') ) as CombinationDetail) tb

然后获取id 不在CombinationDetail里面的记录

缺点,如果数据大多,导致长符串超过SQL所限制的长度,CombinationDetail将被截断
------解决方案--------------------
是否可以把"CombinationDetail"里的值改为文本,到调用的时候再转换回来???当然,这只是提供一个思路参考
------解决方案--------------------
 1.循环ID数组查询到每一个ID对应的值
 2.每for一次就 list.add()一次添加到list集合中,然后gridview就可以绑定了。当然可以针对list来排序会进行其他操作。
------解决方案--------------------
不用分隔啊,SQL语句中有这么一个用法"Select  * From table Where id in("+ row["CombinationDetail"].ToString() +")"