【发布时间】:2012-06-18 18:51:54
【问题描述】:
根据选定的主键从数据库中获取记录的最佳方法是什么?
我能够从网格视图中获取选定(选中)行的主键,现在需要从数据库中检索这些选定复合主键的相应记录。
如果行只使用一个主键,那就更容易了。我可以只连接主键(逗号分隔)并在 WHERE IN 子句中使用它。但是这些行使用三个主键(int、int、string)
我正在考虑使用 SELECT JOIN(每组主键选择一个,然后连接所有选择),但我不确定这是否是最优化的方法。
处理这个问题的最佳方法是什么?
提前致谢。
尼基
[更新] - 无法回复个别 cmets,我可能还没有足够的权限,所以会在此处更新帖子以明确。
这是我正在做的一个例子:
数据来自一个带有复合键的数据库表:
TABLE1
KeyCol1 INT (Primary Key),
KeyCol2 STRING (Primary Key),
KeyCol3 INT (Primary Key),
Col4 Decimal,
Col5 STRING,
Other columns . . .
使用 GRIDVIEW 1 的第 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 页上的按钮(例如“取消记录”)后,我需要获取这些行,以显示到另一个页面,如下所示:
使用 GRIDVIEW 2 的第 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 |. . . |_______
(其中原因列是一个文本框)
【问题讨论】:
-
您是否从一个具有使用 3 个字段的复合主键的表中进行选择?如果没有,请发布所涉及表的架构定义
-
我不确定您使用的术语是否正确...您是否基于视图中的选定列生成 sql 语句并且只是连接 串在一起???
-
@Martin Wilson,N West,我已经更新了这个问题,如果可以解决的话。
-
@jonnyGold。我该怎么做?
-
@nikib,您可以通过单击答案正文顶部旁边的灰色轮廓复选标记来接受答案。
标签: sql gridview join primary-key