2009-07-08 6 views
0

Nous avons une table qui est utilisée pour les valeurs d'évaluation dans notre outil où chaque valeur a son valueid. Ne me demandez pas qui est venu avec ce soi-disant design, mais maintenant je dois ajouter plusieurs valeurs à la fin pour chaque évaluation.Comment insérer plusieurs lignes pour n valeurs

Ainsi, il ressemble à ceci:

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 

je maintenant sans doute besoin d'un sous-requête qui renvoie tous assessmentids distincts et pour chacun de ceux que j'ajouter mes lignes

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 
... 

Honnêtement, je n'ai pas indice comment y parvenir. Peut-être une sous-sélection avec un groupe, mais comment puis-je obtenir l'évaluation sélectionnée dans le nouvel insert?

Edit: bien, en fait, nous avons 709 valeurs pour chaque évaluation et maintenant nous avons besoin de 24 plus à la fin des données supplémentaires

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

quelque chose comme ça

+0

Qu'est-ce SGBDR vous utilisez ? – Quassnoi

+0

Nous utilisons Oracle 10 – lostiniceland

Répondre

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

merci pour la réponse rapide, mais il ne semble pas tout à fait ce dont j'ai besoin. J'ai besoin de quelque chose où je n'ai pas à spécifier l'assessmentid. Je dois ajouter environ 24 lignes avec de nouvelles valeurs pour chaque évaluation. Ce script doit ensuite être exécuté sur les données de production plus tard :) – lostiniceland

+0

Vous avez 2 ID et 3 valeurs par ID. Comment obtenez-vous 24? Veuillez spécifier l'algorithme d'insertion de nouvelles lignes. – Quassnoi

+0

J'ai ajouté un code semblable à un algorithme à la question – lostiniceland