2017-07-13 3 views
0

Considérons que j'ai deux tables parent_table avec la colonne parent_id et child_table avec la colonne child_id. Maintenant, je dois donner le mapping pour l'enfant et le parent dans une autre table appelée mapping_table avec parent_id et child_id comme colonnes. Comment puis-je faire cela dans postgresql 9.5? Le nombre d'enregistrements dans les deux tables est énorme, donc je ne peux pas le faire manuellement. me suggérer la meilleure façon dont je peux faire ce mappingComment extraire deux colonnes différentes de deux tables différentes et les placer dans une troisième table avec un mappage un à un?

Dites les enregistrements dans la table sont comme ceci: table_parent:

|parent_id| 
1 
2 
3 

table enfant:

|child_id| 
01 
02 
03 

Le résultat doit être aussi suit: table de correspondance

parent_id | child_id 
1   | 01 
2   | 02 
3   | 03 
+0

comment elles sont corrélées? .. est child_id un champ de texte égal à PARENT_ID avec précédent zéro? .. –

+0

il n'y a pas de relation entre les tables des id peut être quelque chose – Karthik

+0

S'il n'y a pas de relation, puis pouvez-vous faire une jointure complète? – zainul

Répondre

1

Yo u peut utiliser une requête comme suit:

INSERT INTO mapping_table (parent_id, child_id) 
SELECT t1.parent_id, t2.child_id 
FROM (
    SELECT ROW_NUMBER() OVER (ORDER BY parent_id) AS rn, 
      parent_id 
    FROM parent_table) AS t1 
JOIN (
    SELECT ROW_NUMBER() OVER (ORDER BY child_id) AS rn, 
      child_id 
    FROM child_table) AS t2 
ON t1.rn = t2.rn; 

La requête utilise ROW_NUMBER afin de relier les deux tableaux à l'autre. Cela résulte en un mappage 1-1.

Demo here

+0

Cela a fait l'affaire .. merci beaucoup pour votre aide :) – Karthik