Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/08/2011, 12h33   #1
Invité de passage
 
Inscription : décembre 2010
Messages : 4
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 4
Points : 0
Points : 0
Par défaut traitement d'insertion récursif

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 :
1
2
3
4
5
6
7
8
9
10
COL1		VARCHAR2(255 BYTE)
COL2		VARCHAR2(255 BYTE)
COL3		VARCHAR2(255 BYTE)
LB_TIE		VARCHAR2(255 BYTE)
LB_D_EN_REL	VARCHAR2(255 BYTE)
LB_ACT		VARCHAR2(255 BYTE)
LB_MTF_SEL	VARCHAR2(255 BYTE)
LB_D_ETRN_EPA	VARCHAR2(255 BYTE)
LB_D_MAJ_ETRN_EPA VARCHAR2(255 BYTE)
LB_RESU_ANA	VARCHAR2(255 BYTE)

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 :
1
2
3
4
5
6
7
TI_EDI_CPT_DIR_AG_COL1 (correspond à une ligne de libellés, COl1=1)
COl1    Col2          Col3      LB_TIE          LB_D_EN_REL                   LB_ACT   LB_MTF_SEL   LB_D_ETRN_EPA    LB_D_MAJ_ETRN_EPA   LB_RESU_ANA
1	104682240		CONTROLE 	COMPTES A  EXAMINER NOV2010					
1	104682245		CONTROLE 	COMPTES A  EXAMINER NOV2010					
1	104682246		CONTROLE 	COMPTES A  EXAMINER NOV2010					
1	104682247		CONTROLE 	COMPTES A  EXAMINER NOV2010					
1	300762019		CONTROLE 	COMPTES A  EXAMINER NOV2010
2/
Code :
1
2
3
4
5
6
7
TI_EDI_CPT_DIR_AG_COL2 (correspond à une ligne vide, COl1=2)
COl1    Col2          Col3      LB_TIE          LB_D_EN_REL                   LB_ACT   LB_MTF_SEL   LB_D_ETRN_EPA    LB_D_MAJ_ETRN_EPA   LB_RESU_ANA
2	104682240								
2	104682245								
2	104682246								
2	104682247								
2	300762019
3/
Code :
1
2
3
4
5
6
7
TI_EDI_CPT_DIR_AG_COL3 (correspond au nom de l'affectataire (=agent), COl1=3 avec son ID associée (Col3=ID agent))
COl1    Col2          Col3      LB_TIE                              LB_D_EN_REL                   LB_ACT   LB_MTF_SEL   LB_D_ETRN_EPA    LB_D_MAJ_ETRN_EPA   LB_RESU_ANA
3	104682240	7140	AFFECTATAIRE : FRANCOIS
3	104682240	35256	AFFECTATAIRE : FRED
3	104682240	7224	AFFECTATAIRE : FABRICE
3	104682240	7264	AFFECTATAIRE : FABIEN
...
...

4/
Code :
1
2
3
4
5
6
7
TI_EDI_CPT_DIR_AG_COL4 (correspond au lignes de libellés (Col1=4))
COl1    Col2          Col3      LB_TIE              LB_D_EN_REL             LB_ACT          LB_MTF_SEL                              LB_D_ETRN_EPA           LB_D_MAJ_ETRN_EPA       LB_RESU_ANA
4	104682240		CLIENT CONCERNE	    ENTREE EN RELATION	ACTIVITE	OPERATIONS MOTIVANT LA SELECTION	DATE DE L'ENTRETIEN	DATE DE L'ENTRETIEN	RESULTAT DE L'EXAMEN
4	104682245		CLIENT CONCERNE	    ENTREE EN RELATION	ACTIVITE	OPERATIONS MOTIVANT LA SELECTION	DATE DE L'ENTRETIEN	DATE DE L'ENTRETIEN	RESULTAT DE L'EXAMEN
4	104682246		CLIENT CONCERNE	    ENTREE EN RELATION	ACTIVITE	OPERATIONS MOTIVANT LA SELECTION	DATE DE L'ENTRETIEN	DATE DE L'ENTRETIEN	RESULTAT DE L'EXAMEN
4	104682247		CLIENT CONCERNE	    ENTREE EN RELATION	ACTIVITE	OPERATIONS MOTIVANT LA SELECTION	DATE DE L'ENTRETIEN	DATE DE L'ENTRETIEN	RESULTAT DE L'EXAMEN
4	300762019		CLIENT CONCERNE	    ENTREE EN RELATION	ACTIVITE	OPERATIONS MOTIVANT LA SELECTION	DATE DE L'ENTRETIEN	DATE DE L'ENTRETIEN	RESULTAT DE L'EXAMEN
5/
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
TI_EDI_CPT_DIR_AG_COL5 (correspond au lignes de données (Col1=5)) (Col3=ID agent)
COl1    Col2          Col3      LB_TIE                                  LB_D_EN_REL             LB_ACT                  LB_MTF_SEL                              LB_D_ETRN_EPA           LB_D_MAJ_ETRN_EPA       LB_RESU_ANA
5	104682240	7239	2240 XXXXXX X X MONSIEUR TOTO   	10-OCT-97	employe du prive         	1 Emissions de chèques pour 79005	104682240	7239	2240 XXXXXX X X MONSIEUR TOTO   	10-OCT-97	employe du prive         	8 Emissions de chèques pour 69005	104682240	7239	2240 XXXXXX X X MONSIEUR TOTO   	10-OCT-97	employe du prive         	2 Virements de chèques pour 130005	104682240	7239	2240 XXXXXX X X MONSIEUR TOTO   	10-OCT-97	employe du prive         	1 Virement de chèques pour 1659,795	104682240	7224	2240 XXXXXX X X MONSIEUR TATA		04-NOV-97	employe du public        	7 Virements reçus pour 1788.925	104682240	7224	2240 XXXXXX X X MONSIEUR TATA		04-NOV-97	employe du public        	1 Remises de chèques pour 505	104682240	7224	2240 XXXXXX X X MONSIEUR TATA		04-NOV-97	employe du public        	3 Virements reçus pour 121.145	104682240	7224	2240 XXXXXX X X MONSIEUR TATA		04-NOV-97	employe du public        	17 Emissions de chèques pour 826.35	104682240	7224	2240 XXXXXX X X MONSIEUR TATA		04-NOV-97	employe du public        	2 Virements émis pour 1005	104682240	7224	2240 XXXXXX X X MONSIEUR TATA		04-NOV-97	employe du public        	2 Virements émis pour 1005	104682240	7224	2240 XXXXXX X X MONSIEUR TATA		04-NOV-97	employe du public        	7 Prélevements payés pour 766.52€			
...
...
6/
Code :
1
2
3
4
5
6
7
TI_EDI_CPT_DIR_AG_COL6 (correspond au lignes de données (Col1=6))
COl1    Col2          Col3      LB_TIE                                  LB_D_EN_REL             LB_ACT                  LB_MTF_SEL                              LB_D_ETRN_EPA           LB_D_MAJ_ETRN_EPA       LB_RESU_ANA
6	104682240		2240 XXXXXX X X MONSIEUR TOTO		Jamais signalé		Jamais topé				
6	104682240		2240 XXXXXX X X MONSIEUR TATA		Jamais signalé		Jamais topé				
6	104682240		2240 XXXXXX X X MONSIEUR TITI 		Jamais signalé		Jamais topé				
...
...
La table cible doit ressembler à ça :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
2	104682240		                                             	          	                                	                                                  
1	104682240		            CONTROLE                     	COMPTES A 	EXAMINER 10 2010                	                                                  
2	104682240	                                             	          	                                	                                                  
3	104682240		AFFECTATAIRE : FRANCOIS                      	          	                                	                                                  
2	104682240		                                             	          	                                	                                                  
4	104682240		          CLIENT CONCERNE                    	DATE RELATION 	ACTIVITE            	         OPERATIONS MOTIVANT LA SELECTION         
5	104682240		02324 XXXXX XXXX XX TOTO                	07/02/1994	PHOTOCOPIE                       	13 REMISES CHEQUES POUR 734417.46 EURO            
6	104682240		JAMAIS SIGNALE                               	          	JAMAIS TOPE                     	249 VIREMENTS RECUS POUR 463486.57 EURO           
6	104682240		                                             	          	                                	2 EMISS. CHQ MONTANT ROND POUR 400000 EURO        
2	104682240		                                             	          	                                	                                                  
3	104682240		AFFECTATAIRE : FRED                       	          	                                	                                                  
2	104682240		                                             	          	                                	                                                  
4	104682240		          CLIENT CONCERNE                    	DATE RELATION 	ACTIVITE            	         OPERATIONS MOTIVANT LA SELECTION         
5	104682240		02324 XXXXXX XXXX XX TATA                     	05/11/2009	TRAVAUX D INSTALLATION           	9 REMISES CHEQUES POUR 43790.13 EURO              
6	104682240		JAMAIS SIGNALE                               	          	JAMAIS TOPE                     	1 TRANSFERTS IMPORT POUR 36138.19 EURO            
2	104682245		                                             	          	                                	                                                  
1	104682245		            CONTROLE                    	COMPTES A 	EXAMINER 10 2010                	                                                  
2	104682245		                                             	          	                                	                                                  
3	104682245		AFFECTATAIRE : FABRICE                              	          	                                	                                                  
2	104682245		                                             	          	                                	                                                  
4	104682245		          CLIENT CONCERNE                    	DATE RELATION   ACTIVITE            	         OPERATIONS MOTIVANT LA SELECTION         
5	104682245		02324 XXXXXX XXXX XX TETE          	        06/09/1996 .	ELECTRICIEN                             249 VIREMENTS RECUS POUR 463486.57 EURO                                                 
6	104682245		                                             	          	                                	                                                  
2	104682246		                                             	          	                                	                                                  
1	104682246		            CONTROLE                     	COMPTES A 	EXAMINER 10 2010                	                                                  
2	104682246		                                             	          	                                	                                                  
3	104682246		AFFECTATAIRE : FABIEN 
2	104682246		                                             	          	                                	                                                  
4	104682246		          CLIENT CONCERNE                    	 DATE RELATION  ACTIVITE            	         OPERATIONS MOTIVANT LA SELECTION         
5	104682246		02137 XXXXXX XXXX XX TITI                	28/10/1996	PLOMBIER                        	18 VIREMENTS RECUS POUR 227018.79 EURO            
6	104682246		JAMAIS SIGNALE                               	          	JAMAIS TOPE                     	1 TRANSFERTS EXPORT POUR 35974.5 EURO             
2	104682246		                                             	          	                                	                                                  
3	104682246		AFFECTATAIRE : PHILIPPE                       	          	                                	                                                  
2	104682246		                                             	          	                                	                                                  
4	104682246		          CLIENT CONCERNE                    	 DATE RELATION 	ACTIVITE            	         OPERATIONS MOTIVANT LA SELECTION         
5	104682246		02137 XXXXXX XXXX XX TUTU                 	09/05/2007	EDITION                          	2 REMISES CHEQUES POUR 53724.32 EURO              
6	104682246		JAMAIS SIGNALE                               	          	TOPE EN 200810                  	1 TRANSFERTS EXPORT POUR 42825.61 EURO            
2	104682246		                                             	          	                                	                                                  
...
La requête que j'ai créée ne me satisfait pas :
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 :
1
2
3
4
5
6
7
8
9
10
TYP     LIG     ORD
1	2	1
1	1	2
1	2	3
2	3	1
2	2	2
2	4	3
2	5	4
2	6	5
2	2	6
J'avoue que je n'ai pas d'idée...
Merci d'avance pour votre aide
buzzzy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 13h52   #2
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Citation:
Envoyé par buzzzy Voir le message
Je dois insérer/mixer les données de mes 6 tables source vers une table cible dans un certain ordre
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.
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 14h05   #3
Membre expérimenté
 
Homme Mohamed Houri
Inscription : mars 2010
Messages : 286
Détails du profil
Informations personnelles :
Nom : Homme Mohamed Houri
Localisation : France

Informations forums :
Inscription : mars 2010
Messages : 286
Points : 563
Points : 563
Citation:
Envoyé par orafrance Voir le message
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.
C'est archi vrai.

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
Mohamed.Houri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 16h24   #4
Candidat au titre de Membre du Club
 
Inscription : février 2008
Messages : 96
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 96
Points : 14
Points : 14
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:
Groupe 1 : "AFFECTATAIRE"
Groupe 2 : "Clients Concernés"
Groupe 3 : "Information Client"
Dans l'état on aura :

La liste de tous les affectataires avec les clients qui leur sont affectés

Donc :
Citation:
N Groupes d'affectataires pour 1 Etat
N Groupes de clients concernés pour 1 Affectataire
N Lignes de libellés (actuellement 2) pour 1 Client
Je pensais donc faire cela via le paramétrage d'une table ...

Code :
1
2
3
G1 contient n G2
G2 contient n G3
G3 contient n lignes
Vous voyez le genre ?

Et peut-être par la suite utiliser des fonctions analytiques oracle ...

Si qqun à une piste ...

Ai-je bien expliqué ton cas le collègue ?
patgabjoe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 10h29   #5
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 925
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 925
Points : 4 547
Points : 4 547
Citation:
Envoyé par orafrance Voir le message
Le contenu d'une table n'est pas ordonnée, donc insérer dans un certain ordre ça rime à rien...
juste histoire de trouver l'exception qui confirme la régle...

Citation:
CREATE INDEX
You can specify NOSORT to indicate to the database that the rows are already stored in the database in ascending order... For greatest savings of sort time and space, use this clause immediately after the initial load of rows into a table
demo
Code :
1
2
3
4
5
CREATE TABLE t1 AS 
  WITH t AS (SELECT * FROM dual connect BY level<=3000) 
  SELECT rownum x FROM t,t;
CREATE TABLE t2 AS 
  SELECT * FROM t1 ORDER BY dbms_random.value;
les tables t1 et t2 sont identiques. T1 est triée. T2 ne l'est pas
Code :
1
2
3
4
5
6
SQL> CREATE INDEX i1 ON t1(x) nosort
INDEX created.
Elapsed: 00:00:06.26
SQL> CREATE INDEX i2 ON t2(x)
INDEX created.
Elapsed: 00:00:30.40
création 5 fois plus rapide!

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SQL> SELECT count(*) FROM t1 WHERE x BETWEEN 100 AND 200
 
  COUNT(*)
----------
       101
1 row selected.
Elapsed: 00:00:00.12
SQL> SELECT count(*) FROM t2 WHERE x BETWEEN 100 AND 200
 
  COUNT(*)
----------
       101
1 row selected.
Elapsed: 00:00:01.06

selection également 5x plus rapide !!!
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 11h35   #6
Membre expérimenté
 
Homme Mohamed Houri
Inscription : mars 2010
Messages : 286
Détails du profil
Informations personnelles :
Nom : Homme Mohamed Houri
Localisation : France

Informations forums :
Inscription : mars 2010
Messages : 286
Points : 563
Points : 563
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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
mhouri.world > CREATE TABLE t1 AS
  2    WITH t AS (SELECT * FROM dual connect BY level<=30)
  3    SELECT rownum x FROM t,t;
 
TABLE created.
 
mhouri.world > SELECT
  2        substr(rowid,10,6) bloc
  3       ,substr(rowid,16,3) rec
  4       ,x
  5  FROM t1;
 
BLOC   REC          X                                                           
------ --- ----------                                                           
AAAAN8 AAA          1                                                           
AAAAN8 AAB          2                                                           
AAAAN8 AAC          3                                                           
AAAAN8 AAD          4                                                           
AAAAN8 AAE          5                                                           
AAAAN8 AAF          6                                                           
AAAAN8 AAG          7                                                           
AAAAN8 AAH          8                                                           
AAAAN8 AAI          9                                                           
AAAAN8 AAJ         10                                                           
AAAAN8 AAK         11                                                           
 
BLOC   REC          X                                                           
------ --- ----------                                                           
AAAAN8 AAL         12                                                           
AAAAN8 AAM         13                                                           
AAAAN8 AAN         14                                                           
AAAAN8 AAO         15                                                           
AAAAN8 AAP         16                                                           
AAAAN8 AAQ         17                                                           
AAAAN8 AAR         18                                                           
AAAAN8 AAS         19
Remarquez comment les données sont parfaitement triés (AAA,AAB, AAC,etc..). Mais voyons ce que peut faire un simple delete

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
 
mhouri.world > DELETE FROM t1 WHERE x = 10;
 
1 row deleted.
 
mhouri.world > INSERT INTO t1 VALUES (10);
 
1 row created.
 
mhouri.world > commit;
 
Commit complete.
 
mhouri.world >SELECT
  2        substr(rowid,10,6)  bloc
  3       ,substr(rowid,16,3) rec
  4       ,x
  5  FROM t1;
 
BLOC   REC          X                                                           
------ --- ----------                                                           
AAAAN8 AAA          1                                                           
AAAAN8 AAB          2                                                           
AAAAN8 AAC          3                                                           
AAAAN8 AAD          4                                                           
AAAAN8 AAE          5                                                           
AAAAN8 AAF          6                                                           
AAAAN8 AAG          7                                                           
AAAAN8 AAH          8                                                           
AAAAN8 AAI          9                                                           
AAAAN8 AAK         11                                                           
AAAAN8 AAL         12                                                           
 
BLOC   REC          X                                                           
------ --- ----------                                                           
AAAAN8 AAM         13                                                           
AAAAN8 AAN         14                                                           
AAAAN8 AAO         15                                                           
AAAAN8 AAP         16                                                           
AAAAN8 AAQ         17                                                           
AAAAN8 AAR         18                                                           
AAAAN8 AAS         19
L'ordre est déjà brisé (AAH, AAI, AAK, etc..)

Bien Cordialement

Mohamed Houri
Mohamed.Houri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 12h25   #7
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 925
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 925
Points : 4 547
Points : 4 547
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 :
1
2
3
4
5
6
SQL> DROP INDEX i2
INDEX dropped.
SQL> CREATE INDEX i2 ON t2(x) nosort
CREATE INDEX i2 ON t2(x) nosort
Error at line 3
ORA-01409: NOSORT OPTION may NOT be used; rows are NOT IN ascending ORDER
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 13h41   #8
Candidat au titre de Membre du Club
 
Inscription : février 2008
Messages : 96
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 96
Points : 14
Points : 14
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)
patgabjoe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 13h49   #9
Candidat au titre de Membre du Club
 
Inscription : février 2008
Messages : 96
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 96
Points : 14
Points : 14
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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
G1
    G2
         G3 (2 lignes)
         G3 (2 lignes)
         G3 (2 lignes)
   G2
         G3 (2 lignes)
         G3 (2 lignes)
   G2
         G3 (2 lignes)
         G3 (2 lignes)
         G3 (2 lignes)
         G3 (2 lignes)
G1
    G2
         G3 (2 lignes)
   G2
         G3 (2 lignes)
         G3 (2 lignes)
 
G1
    G2
         G3 (2 lignes)
         G3 (2 lignes)
         G3 (2 lignes)
   G2
         G3 (2 lignes)
   G2
         G3 (2 lignes)
etc ....

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
patgabjoe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 15h27   #10
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Citation:
Envoyé par laurentschneider Voir le message
CREATE INDEX
You can specify NOSORT to indicate to the database that the rows are already stored in the database in ascending order... For greatest savings of sort time and space, use this clause immediately after the initial load of rows into a table
C'est beau

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
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 15h57   #11
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 925
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 925
Points : 4 547
Points : 4 547
absolument, c'est le genre de truc inutilisable qu'on employe jamais, c'était juste pour le fun
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h54.


 
 
 
 
Partenaires

Hébergement Web