首页 文章

使用复合主键基于多个记录查询结果

提问于
浏览
0

根据所选主键从数据库获取记录的最佳方法是什么?

我能够从gridview获取所选(已检查)行的主键,现在需要从数据库中检索所选复合主键的相应记录 .

如果行只使用一个主键,则会更容易 . 我可以简单地连接主键(逗号分隔)并在WHERE IN子句中使用它 . 但行使用三个主键(int,int,string)

我正在考虑使用SELECT JOIN(每个主键一个选择,然后加入所有选择),但我不确定这是否是最优化的方法 .

处理这个问题的最佳方法是什么?

提前致谢 .

尼基

[更新] - 无法回复个人评论,我可能还没有足够的权限,所以将在此处更新帖子清楚 .

这是我正在做的一个例子:

来自具有复合键的一个数据库表的数据:

TABLE1
KeyCol1 INT (Primary Key),
KeyCol2 STRING (Primary Key),
KeyCol3 INT (Primary Key),
Col4    Decimal,
Col5    STRING,
Other columns . . .

第1页与GRIDVIEW 1:

Sel |KeyCol1 |KeyCol2 |KeyCol3 |Col4  |Col5          |Other Columns . . .
[ ] |100     |CODE1   |01      |10.05 |Description 1 |. . .
[/] |100     |CODE1   |02      | 5.03 |Description 2 |. . .
[ ] |100     |CODE2   |01      |12.45 |Description 4 |. . .
[/] |102     |CODE1   |01      |21.50 |Description 1 |. . .
[/] |102     |CODE2   |01      | 9.10 |Description 5 |. . .
[/] |102     |CODE3   |03      | 7.15 |Description 1 |. . .

. . . (其中Sel列是一个复选框,并且[/]被选中)

然后在第1页上单击按钮(例如“取消记录”)后,我需要获取这些行,以显示到另一个页面,如下所示:

第2页使用GRIDVIEW 2

KeyCol1 |KeyCol2 |KeyCol3 |Col4  |Other Colums  |Reason
100     |CODE1   |02      | 5.03 |. . .         |_______
102     |CODE1   |01      |21.50 |. . .         |_______
102     |CODE2   |01      | 9.10 |. . .         |_______
102     |CODE3   |03      | 7.15 |. . .         |_______

(其中Reason列是文本框)

1 回答

  • 1

    您可以在单个查询中执行此操作,方法是为每个三个id(即gridview中的每个选定行)添加OR子句 . 例如:

    选择FROM Table1 WHERE(KeyCol1 = val1-1 AND KeyCol2 = val1-2 AND KeyCol3 = val1-3)OR(KeyCol1 = val2-1 AND KeyCol2 = val2-2 AND KeyCol3 = val2-3)或..等

相关问题