如何使用多个查询动态填充网格视图

时间:2013-04-29 18:43:28

标签: sql gridview

我有两个表,UserInfo(PrimaryKey = UID)和Relationships(PrimaryKey = RID,ForeignKey = UID)。 关系数据示例:


| UID | RID |

|  2  |  3  |

|  3  |  4  |

现在,在执行sql查询后,它会在Relationships表上执行一些排序,如:

"select RID from Relationships where UID= "value"
UNION select UID from Relationships where RID= "value " 

如果值= 3,我得到的整数值为2,4(这意味着3与2和4有关系)

如果value = 4,则结果= 3(4只与3有关系)

等这些结果值是UserInfo表的主键值。

我想要的是获取具有UID = 23,25,34的用户信息(这些值是第一次SQL查询的结果,因此值和值的数量每次都会更改传递给第一个SQL查询的值) 并用asp Gridview绑定它。

为此,我想我将不得不执行多个SQL查询,如

select * from UserInfo where UID= 2

select * from UserInfo where UID= 4

使用循环。

我认为我应该做的是遍历第一个sql查询的结果,根据它执行第二个查询并将结果记录集保存在另一个表或任何类型的数据源中,最后绑定到gridview ..但我不知道如何实现它..

这是我在StackOverflow中的第一个问题..如果有必要,我会尽力进一步澄清问题..

任何帮助都会非常值得赞赏..! :)

1 个答案:

答案 0 :(得分:1)

您可以使用SQL连接

select a.RID from Friendships a inner join Relationships b on a.uid=b.uid 
where a.UID= "value" & b.RID="value"
order by a.uid

这将为您提供表A和表A中存在的所有记录。乙。More on SQL Joins

无需循环,因为您可以在单个SQL语句(如

)中执行查询
select * from UserInfo where UID IN (23, 25, 34);

简而言之,select * from table通常是一种不好的做法。您可能希望将其替换为列名