Précédent   Forum des professionnels en informatique > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
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 03/06/2006, 16h37   #1
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
Par défaut requête problème d'occurence

BONJOUR A TOUS
je suis confronter à encore un autre pb de groupage.Après lecture des cours sur le sql je suis
arrivé à la requête suivante:
Code :
1
2
3
4
5
6
7
8
9
10
11
 
SELECT PG_MAN.COURS, PG_MAN.CODE_PGMAN, PG_MAN.NOM_MAN,
ECOLE.NOM_EC, DREN.NOM_DREN, IEP.NOM_IEP
FROM IEP
   INNER JOIN ECOLE ON (IEP.NOM_IEP = ECOLE.IEP_NOM_IEP)
   INNER JOIN COGES ON (ECOLE.COGES_NOM_COGES4 = COGES.NOM_COGES)
   INNER JOIN PG_MAN ON (COGES.NOM_COGES = PG_MAN.COGES_NOM_COGES6)
   INNER JOIN DREN ON (ECOLE.DREN_NOM_DREN = DREN.NOM_DREN)
WHERE ECOLE.NOM_EC ='ABRONAMOUE-1'
AND ANSCO_BES_MAN='2002-2003'
ORDER BY PG_MAN.COURS
On voit bien là qu'il s'agit d'une jointure faite avec 4 tables j'ai le resultat suivant qui
correspond bien à ma demande:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
+--------------------------------------------------------|---------------|-----------+
|COURS  CODE_PGMAN  NOM_MAN                 ECOLE.NOM_EC | DREN.NOM_DREN |IEP.NOM_IEP|
+--------------------------------------------------------|---------------|-----------+
 CE              9  HIST/GEO                ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1  
 CE             10  SC/TEC                  ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1  
 CE1             5  FRANCAIS                ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1  
 CE1             6  MATHEMATIQUE            ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1  
 CE2             7  FRANCAIS                ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1  
 CE2             8  MATHEMATIQUE            ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1  
 CM             15  HIST/GEO                ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1  
 CM             16  SC/TEC                  ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1  
 CM1            11  FRANCAIS                ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1  
 CM1            12  MATHEMATIQUE            ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1  
 CM2            13  FRANCAIS                ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1  
 CM2            14  MATHEMATIQUE            ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1  
 CP1             1  FRANCAIS                ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1  
 CP1             2  MATHEMATIQUE            ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1  
 CP2             3  FRANCAIS                ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1  
 CP2             4  MATHEMATIQUE            ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1
Mon pb est le suivant quand on regarde bien la colonne cours le nom se repette deux fois
normal puisque deux informations sont rentrées pour le même cours.
est ce qu'il n'est pas possible d'avoir une requête qui me donnera une une seule occurence
par cours c'est à dire:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
+--------------------------------------------------------|---------------|-----------+
|COURS  CODE_PGMAN  NOM_MAN                 ECOLE.NOM_EC | DREN.NOM_DREN |IEP.NOM_IEP|
+--------------------------------------------------------|---------------|-----------+
 CE              9  HIST/GEO                ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1  
                10  SC/TEC                  ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1  
 CE1             5  FRANCAIS                ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1  
                 6  MATHEMATIQUE            ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1  
 CE2             7  FRANCAIS                ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1  
                 8  MATHEMATIQUE            ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1  
 CM             15  HIST/GEO                ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1  
                16  SC/TEC                  ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1  
 CM1            11  FRANCAIS                ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1  
                12  MATHEMATIQUE            ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1  
 CM2            13  FRANCAIS                ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1  
                14  MATHEMATIQUE            ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1  
 CP1             1  FRANCAIS                ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1  
                 2  MATHEMATIQUE            ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1  
 CP2             3  FRANCAIS                ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1  
                 4  MATHEMATIQUE            ABRONAMOUE-1 | ABENGOUROU    |ABENGOUROU 1
Dans ce cas on voit bien le cours se repette une seul fois et non deux fois par ligne.
voici donc exposé mon pb.
je me suis dit que je pouvait faire un formatage pour afficher au niveau de mon etat
(je bosse avec windev 9 et firebird 1.5.3), j'ai tout essayé mais rien ! je cherche encore.
Merci à tous pour vos reponses et suggestion.
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2006, 09h10   #2
Membre régulier
 
Avatar de maamar1979
 
Inscription : mai 2006
Messages : 174
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 174
Points : 96
Points : 96
je pense qu'il n'existe pas d'instruction SQL qui permet cela, je te propose de cree une table temportaire dans laquel tu stock le resultat de la requette, tu parcours la table ligne par ligne, tu compare et tu efface les champs en double, puis tu utilise cette meme table pour afficher.

voici un codepermettant de parcourir la table temporaire et d'effaver les doublons (j'ai pas tester) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
table1.first;
enregCourant:=table1.fieldbyname('cours').asstring; //enregistre le dernier cours
table1.next;
while NOT table1.eof do
begin
 
 IF table1.fieldbyname('cours').asstring = enregCourant then //verifie si c'est identique ou non par rapport au dernier cours
 table1.fieldbyname('cours').clear
 else
 enregCourant:=table1.fieldbyname('cours').asstring ;
 
table1.next
end;
nb: tu doit laisser ta table trier par le champ "cours" biensur !
salam
maamar1979 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2006, 12h46   #3
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
ok merci pour ta prosition mais mon pb vient en faite du formatage et voici un lien important qui m'a aider à comprendre
Les erreurs les plus fréquentes en SQL en particulier : 9. Cosmétique..
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2006, 12h47   #4
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
voici le lienhttp://sql.developpez.com/sqlaz/erreurs/
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2006, 13h08   #5
Membre régulier
 
Avatar de maamar1979
 
Inscription : mai 2006
Messages : 174
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 174
Points : 96
Points : 96
merci pour le lien c'est tres interessant
salam
maamar1979 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h58.


 
 
 
 
Partenaires

Hébergement Web