■質問したい事
今下記のように実装をしているのですが,ループの中でクエリを発行することがコード規約では禁止されており,出来ればループの中で更に検索という形ではなく,■DBのデータ状態からその結果を上手く取り出し,■最終的に取得したいデータ状態にしたいと考えております。(ややこしいのはHRGはSEQが同値であっても複数データ存在することがあることです。。ALPはSEQが同値であれば必ず同値です。)
色々試行錯誤しましたがSQLの知識乏しくSQLでどこまで出来るのか,Javaでもっとスマートに書く方法があるのか,私自身ネタ切れになってしまったので,アイディアを頂きたく投稿させて頂きました。
ちなみにSEQNOは昇順でデータを保持必須です。
■DBのデータ状態
|SEQ|ALP|HRG|
|1 |A |あ |
|1 |A |い |
|1 |A |う |
|2 |B |な |
|2 |B |に |
|3 |C |ら |
■最終的に取得したいデータ状態
[1,A,(あ,い,う)],[2,B,(な,に)],[3,C,(ら)]
■現在の実装
①まずSEQとALPのみSELECTして下記データ状態を作成し,SEQとALPを一意にして取得(SEQNOでDISTINCTしている)
java
1SELECT DISTINCT SEQ FROM TABLE WHERE SEQ='1' OR SEQ='2' OR SEQ='3' ORDER BY SEQ ASC 2|SEQ|ALP| 3|1 |A | 4|2 |B | 5|3 |C |
②①の結果をループし,SEQを取得(例としてSEQgaSEQが1の時)
java
1while(query.next()){ 2 SEQ = 1 3 ALP = "A" 4 HRGをseqを元にHRG取得クエリを実行↓ 5 SELECT ALP FROM TABLE WHERE SEQ=1 6 |SEQ|ALP|HRG| 7 |1 |A |あ | 8 |1 |A |い | 9 |1 |A |う | 10 while(query.next()){ 11 HRG=あ,い,う 12 } 13}
回答1件
あなたの回答
tips
プレビュー