-1
votes

Insérez de nouveaux enregistrements séquentiels dans une table enfant pour chaque enregistrement de la table des parents

J'ai deux tables (SQL-Server):

t2:
=======================
parent_id record_number
1         1
1         2
2         1
2         2
2         3


2 commentaires

D'où vient 1,2 et 2,3?


@Salmana Ce serait le prochain séquentiel record_number pour chaque parent_id .


3 Réponses :


0
votes

Est-ce ce que vous voulez? XXX PRE>

Si tel est le cas, je préfère utiliser null code> pour représenter que quelque chose n'a aucun parent: P>

insert into t2 (parent_id, record_number)
    select null, id
    from t1;


0 commentaires

1
votes

i pense em> ce que l'OP est après est:

INSERT INTO T2
SELECT T1.id
       MAX(T2.ID) + 1
FROM T1
     JOIN T2 ON T1.ID = T2.parent_id
GROUP BY T1.id;


0 commentaires

0
votes

Quelque chose comme ça devrait obtenir ce que vous voulez.

Remarque Je l'ai ajouté avec une jointe à gauche afin que vous puissiez utiliser Isnull au cas où l'enregistrement parent n'est pas encore dans T2. P>

SELECT
    *,
    ROW_NUMBER() OVER (PARTITION BY parent_id ORDER BY id)
FROM t2 
ORDER BY parent_id, record_number


2 commentaires

Cher Eilet Hjelmeseth, c'est exactement ce dont j'ai besoin, merci! Merci à tous répondre à ma question!


@cadol_stov, heureux d'aider et de bienvenue au débordement de la pile! Si cette réponse ou une autre solution a résolu votre problème, veuillez la marquer comme acceptée en cliquant sur la coche verte.