0

選択した主キーに基づいてデータベースからレコードを取得するための最良の方法は何ですか?

グリッドビューから選択された(チェックされた)行の主キーを取得できます。次に、選択された複合主キーに対応するレコードをデータベースから取得する必要があります。

行が主キーを1つだけ使用している場合は、より簡単でした。主キー(コンマ区切り)を連結して、WHEREIN句で使用することもできます。ただし、行は3つの主キー(int、int、string)を使用しています

SELECT JOIN(主キーのセットごとに1つの選択、次にすべての選択を結合)を使用することを考えていますが、これがこれを行うための最も最適化された方法であるかどうかはわかりません。

これを処理するための最良の方法は何ですか?

前もって感謝します。

ニキ

[更新]-個々のコメントに返信することはできません。まだ十分な権限がない可能性があるため、ここで投稿を更新して明確にします。

これが私がしていることの例です:

複合キーを持つ1つのデータベーステーブルからのデータ:

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

グリッドビュー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のボタン(例:「レコードのキャンセル」)をクリックした後、次のような別のページに表示するために、これらの行を取得する必要があります。

GRIDVIEW2を使用したページ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 |. . .         |_______

(理由列はテキストボックスです)

4

1 に答える 1

1

これは、IDのトリオごとに(つまり、グリッドビューで選択した行ごとに)OR句を追加することにより、単一のクエリで実行できます。例えば:

表1から何でも選択WHERE(KeyCol1 = val1-1 AND KeyCol2 = val1-2 AND KeyCol3 = val1-3)OR(KeyCol1 = val2-1 AND KeyCol2 = val2-2 AND KeyCol3 = val2-3)OR .. etc

于 2012-06-20T08:34:43.740 に答える