|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||||||||||||
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 4 ![]() |
Bonjour,
voilà je suis confronté à une problématique que je n'arrive pas à résoudre et que vous expose : j'ai 6 tables (TI_EDI_CPT_DIR_AG_COL1,TI_EDI_CPT_DIR_AG_COL2,..... à TI_EDI_CPT_DIR_AG_COL6) en source qui ont la même structure : Code :
Je dois insérer/mixer les données de mes 6 tables source vers une table cible dans un certain ordre : 1/ une ligne vide (caractérisée par le code 2 (champ "Col1"). 2/ une ligne de libellés (caractérisée par le code 1 (champ "Col1") 3/ une ligne vide (caractérisée par le code 2 (champ "Col1") 4/ une ligne comportant le nom de l'agent (caractérisée par le code 3 (champ "Col1") 5/ une ligne vide (caractérisée par le code 2 (champ "Col1"). 5/ une ligne de libellés (caractérisée par le code 4 (champ "Col1") 6/ une ou plusieurs lignes de données (caractérisée par le code 5 (champ "Col1"). S'il y a plusieurs lignes, la 1ere ligne commence par le code 5, les suivantes par le code 6. 7/ une ligne de données (caractérisée par le code 6 (champ "Col1") 8/ une ligne vide (caractérisée par le code 2 (champ "Col1") Voici le contenu de mes tables source : 1/ Code :
Code :
Code :
4/ Code :
Code :
Code :
Code :
select LST.* from ( select * from ti_edi_cpt_dir_ag_col1 union all select * from ti_edi_cpt_dir_ag_col2 union all select * from ti_edi_cpt_dir_ag_col3 union all select * from ti_edi_cpt_dir_ag_col4 union all select * from ti_edi_cpt_dir_ag_col5 union all select * from ti_edi_cpt_dir_ag_col6) LST, TI_EDI_LIG_ORDER ORD WHERE LST.COL1 = ORD.LIG order by LST.COL2, ORD.TYP, ORD.ORD avec la table TI_EDI_LIG_ORDER qui a la structure : Code :
Merci d'avance pour votre aide |
||||||||||||||||||
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Le contenu d'une table n'est pas ordonnée, donc insérer dans un certain ordre ça rime à rien, au mieux il faudra ajouté une colonne qui donne un numéro d'ordre à tes lignes via une séquence par exemple.
|
|
|
00
|
|
|
#3 | |
|
Membre expérimenté
![]() Mohamed HouriInscription : mars 2010 Messages : 286 ![]() |
Citation:
Sauf qu'il peut nous dire qu'il veut faire cela pour générer une certaine valeur du clustering Factor d'un certain index qu'il a l'intention de créér. Mais vu la question, je ne pense pas qu'il ait pensé à cela Bien Cordialement Mohamed Houri |
|
|
|
00
|
|
|
#4 | ||||
|
Candidat au titre de Membre du Club
![]() Inscription : février 2008 Messages : 96 ![]() |
Allez on va aider le collègue.
Pour résumer, il doit faire un état BO et veut constituer un état qui ressemblera à sa table cible. Cet état aura : 1 Titre : ce sont les 3 premières lignes, composées de 2 lignes vides avec un centre une ligne pour le titre "Controle Comptes a examiner ..." Et des blocs répétitifs Mon idée est donc de définir des groupes. Comme vous pouvez le voir, on peut constituer 3 groupes. Citation:
La liste de tous les affectataires avec les clients qui leur sont affectés Donc : Citation:
Code :
Et peut-être par la suite utiliser des fonctions analytiques oracle ... Si qqun à une piste ... Ai-je bien expliqué ton cas le collègue ? |
||||
|
|
00
|
|
|
#5 | ||||||||
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 925 ![]() |
Citation:
Citation:
Code :
Code :
Code :
selection également 5x plus rapide !!! |
||||||||
|
00
|
|
|
#6 | ||||
|
Membre expérimenté
![]() Mohamed HouriInscription : mars 2010 Messages : 286 ![]() |
Je pense que ce qu'il faut inculquer ici, c'est que ca n'est pas parce que nous avons trié les données dans le select qui a servi à l'insert que ces dernières vont être forcément rassemblées ensemble au même endroit et ordonnées. Oracle va insérer les données là où il trouvera de l'espace libre.Je ne vous parle pas de l'effet d'un simple delete qui suivra l'insert "ordonné"
Code :
Code :
Bien Cordialement Mohamed Houri |
||||
|
|
00
|
|
|
#7 | ||
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 925 ![]() |
c'est tout simple, si tu fais un CREATE INDEX NOSORT et que la table n'est pas triée, le CREATE INDEX plante...
Code :
|
||
|
00
|
|
|
#8 |
|
Candidat au titre de Membre du Club
![]() Inscription : février 2008 Messages : 96 ![]() |
Bonjour,
Mais j'ai comme l'impression que l'on s'éloigne du sujet initial. Pour résumer, est-ce que vous voyez comment avec les fonctions analytiques d'Oracle on peut lister les données en groupe. G1 G2 G3 (2 lignes) G3 (2 lignes) G3 (2 lignes) G2 G3 (2 lignes) G3 (2 lignes) |
|
|
00
|
|
|
#9 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : février 2008 Messages : 96 ![]() |
Bonjour,
Mais j'ai comme l'impression que l'on s'éloigne du sujet initial. Pour résumer, est-ce que vous voyez comment, avec les fonctions analytiques d'Oracle (ou peut-être un autre moyen), on peut lister les données en groupe. Code :
Pour rappel 1 groupe peut avoir plusieurs lignes, et chaque type de ligne est identifié par 1 code (nombre) en première position (COL1) Actuellement 1 Table = 1 Type de ligne ... mais je pense qu'il est préférable de fusionner les tables avant de faire le traitement. Les experts vous en pensez quoi ? Merci |
||
|
|
00
|
|
|
#10 | |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Citation:
![]() Ceci étant, impossible d'intercaler des lignes donc dans le cas pratique présent ça me parait difficile à moins de recréer la table à chaque fois... enfin, si j'ai bien compris |
|
|
|
00
|
|
|
#11 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 925 ![]() |
absolument, c'est le genre de truc inutilisable qu'on employe jamais, c'était juste pour le fun
|
|
00
|
Copyright © 2000-2012 - www.developpez.com