2009-07-08 20 views
0

各値にvalueidがあるツールの評価値に使用される表があります。このいわゆるデザインを思いついたのは私に聞かないでください。しかし、今は評価ごとに最後に複数のvalueIDを追加する必要があります。n個の値項目に複数の行を挿入する方法

だから、それは次のようになります。

AssessmentId 1, ValueId 1, Value 
AssessmentId 1, ValueId 2, Value 
AssessmentId 1, ValueId 3, Value 
AssessmentId 2, ValueId 1, Value 
AssessmentId 2, ValueId 2, Value 
AssessmentId 2, ValueId 3, Value 

私は今、おそらくすべての個別assessmentidsを返すサブクエリを必要と私は正直なところ、私の行

AssessmentId 1, ValueId 7, empty 
AssessmentId 1, ValueId 8, empty 
AssessmentId 1, ValueId 9, empty 
AssessmentId 2, ValueId 7, empty 
AssessmentId 2, ValueId 8, empty 
AssessmentId 2, ValueId 9, empty 
... 

を追加し、それらのそれぞれのために、私がいない持っていますどのようにこれを達成するための手掛かり。グループを持つ副選択かもしれませんが、選択した評価IDを新しい挿入物にどのように取得するのですか?

編集: だけでなく、実際に私たちは709の、各評価のための値は、今私たちは、追加データの末尾に24以上が必要

foreach distinct assessmentid in table 
{ 
    insert row (assessmentid, 710, null); 
    insert row (assessmentid, 711, null); 
    ... 
    insert row (assessmentid, 733, null); 
} 

あなたはどのようなRDBMSを使用しているこの

+0

のようなものを持っています? – Quassnoi

+0

私たちはOracle 10 – lostiniceland

答えて

3
INSERT 
INTO i_should_really_name_the_tables_i_ask_about_on_stackoverflow_com (assessmentid, valueid) 
SELECT assessmentId, valueMax + lvl 
FROM (
     SELECT assessmentId, MAX(valueId) AS valueMax 
     FROM i_should_really_name_the_tables_i_ask_about_on_stackoverflow_com t 
     GROUP BY 
       assessmentId 
     ) a 
CROSS JOIN 
     (
     SELECT level AS lvl 
     FROM dual 
     CONNECT BY 
       level <= 24 
     ) l 
+0

を使用していますが、返信には感謝しています。私は、アセスメントを指定しなくてもいい場所が必要です。私は各評価のために新しい評価された値で約24の行を追加する必要があります。このスクリプトは、その後、実動データでも実行する必要があります。 – lostiniceland

+0

IDごとに2つのIDと3つの値があります。あなたはどのように24歳ですか?新しい行を挿入するアルゴリズムを指定してください。 – Quassnoi

+0

質問にアルゴリズムのようなコードを追加しました – lostiniceland

関連する問題