2010-06-09 22 views
1

我有一个包含两列的主键的表。我想根据两个输入数组检索一组行,每个数组对应一个主键列。odp.net SQL查询从两个输入数组中检索一组行

select pkt1.id, pkt1.id2, ... from PrimaryKeyTable pkt1, table(:1) t1, table(:2) t2 
where pkt1.id = t1.column_value and pkt1.id2 = t2.column_value 

然后,我将这些值与odp.net中的两个int []绑定在一起。

这将返回我的结果行的所有不同组合。所以如果我期待13行我收到169行(13 * 13)。问题是t1和t2中的每个值都应该关联。值t2 [4]应与t1一起使用,而不是t2中的所有不同值。

使用不同的解决方案我的问题,但我想知道如果我的方法是错误的。任何人有任何关于如何解决这个最好的方法的指针?一种方法可能是在t1和t2中依次使用for循环访问每个索引,但我不知道什么会更有效。

编辑:其实不同的解决不了我的问题,它只是它的基础上我的输入值

回答

0

(在T2 = 0的值)假设你想在那里的关键在两个表中存在,在所有行任何位置。

select pkt1.id, pkt1.id2, ... 
from PrimaryKeyTable pkt1 
where pkt1.id in (select column_value from table(:1)) 
and pkt1.id2 in (select column_value from table(:2)) 
+0

我想要的结果收缩到绑定表中的位置。因此表(:1)中的索引4与表(:2)中的索引4相关。 我想知道是否有任何方法可以不使用pl/sql和for-loop – KTrum 2010-06-09 13:21:14