odp.net SQL-запрос извлекает набор строк из двух входных массивов - PullRequest
1 голос
/ 09 июня 2010

У меня есть таблица с первичным ключом, состоящая из двух столбцов.Я хочу получить набор строк на основе двух входных массивов, каждый из которых соответствует одному столбцу первичного ключа.

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

Затем я связываю значения двумя int [] в odp.net.

Это возвращает все различные комбинации моих полученных строк.Поэтому, если я ожидаю 13 строк, я получаю 169 строк (13 * 13).Проблема в том, что каждое значение в t1 и t2 должно быть связано.Значение t1 [4] должно использоваться с t2 [4], а не всеми различными значениями в t2.

Использование различных решений решает мою проблему, но мне интересно, если мой подход неверен.У кого-нибудь есть указания на то, как решить эту проблему наилучшим образом?Одним из способов может быть использование циклического доступа к каждому индексу в t1 и t2 последовательно, но мне интересно, что будет более эффективным.

Правка: на самом деле отличное не решит мою проблему, оно просто основанона мои входные значения (все значения в t2 = 0)

Ответы [ 2 ]

0 голосов
/ 10 июня 2010

Этот вопрос решен сейчас.Вот ответ, если вам интересно.

select id1, id2 from t, (select rownum rn1, a1.* from table(:1) a1) a1, (select rownum rn2, a2.* from table(:2) t2) t2 where (id1, id2) in ((a1.column_value, a2.column_value)) and rn1 = rn2

http://forums.oracle.com/forums/thread.jspa?threadID=1083982&tstart=15

0 голосов
/ 09 июня 2010

При условии, что вы хотите, чтобы все строки, в которых есть ключ в обеих таблицах, находились в любой позиции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...