Précédent   Forum des professionnels en informatique > Bases de données > Firebird > Débuter
Débuter Forum d'entraide pour débuter avec 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 23/05/2005, 16h14   #1
Membre régulier
 
Inscription : avril 2002
Messages : 97
Détails du profil
Informations forums :
Inscription : avril 2002
Messages : 97
Points : 91
Points : 91
Par défaut [débutant] problème avec Group by

Salut à tous,

je débuté avec InterBase et ma question va certainement en énerverplus d'un... J'ai recherché un peu dans le forum et n'ai pas trouvé de réponse à mon petit problème... donc...

voici ma requete
Code :
1
2
3
4
5
SELECT (CANT_NOM || ' / ' || DEPT_NUM) AS ID_CANT, CANT_NUM
FROM TCOMMUNES, TCANTONS
WHERE TCOMMUNES.CANT_NUM=TCANTONS.CANT_NUM
GROUP BY CANT_NUM
ORDER BY CANT_NOM
ma clause de regroupement est incomplète, je sais...
mais le "code" que j'utilise d'ordinaire, avec Access par exemple, à savoir
Code :
GROUP BY (CANT_NOM || ' / ' || DEPT_NUM),CANT_NUM
ne passe pas...

comment faut-t-il faire ???

merci à vous pour vos réponses
__________________
Ce n'est pas parce qu'on pédale dans la semoule, qu'on est sûr de manger du couscous... (anonyme)
Amenofis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2005, 17h56   #2
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Faite un groupe by N° de la colonne


Code :
1
2
3
4
SELECT (CANT_NOM || ' / ' || DEPT_NUM) AS ID_CANT, CANT_NUM 
FROM TCOMMUNES, TCANTONS 
WHERE TCOMMUNES.CANT_NUM=TCANTONS.CANT_NUM 
GROUP BY 1, 2
le ORDER BY CANT_NOM est inutile car le group by va faire un tri par (CANT_NOM || ' / ' || DEPT_NUM), CANT_NUM (et donc par cant_nom)


sinon créez une Ps ou vue avec votre
Code :
1
2
SELECT (CANT_NOM || ' / ' || DEPT_NUM) AS ID_CANT, CANT_NUM 
FROM TCOMMUNES, TCANTONS
Ensuite vous pourrez faire un select sur cette vue ou PS en groupant par ID_CANT.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2005, 19h04   #3
Membre régulier
 
Inscription : avril 2002
Messages : 97
Détails du profil
Informations forums :
Inscription : avril 2002
Messages : 97
Points : 91
Points : 91
Bonsoir,

merci pour cette réponse si rapide...

malheureusement, cela ne fonctionne pas...

j'ai droit à
Citation:
"1" Symbole inconnu ligne 4
j'utilise IBEasy+ version 1.3 avec Interbase 6 et Delphi 3...

peut-être me manque-t-il quelque chose... ?

@+
__________________
Ce n'est pas parce qu'on pédale dans la semoule, qu'on est sûr de manger du couscous... (anonyme)
Amenofis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2005, 09h55   #4
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Sous Firebird1.5 celà fonctionne parfaitement et je suppose que sous IB7.X aussi.

Il me semblait pourtant que sous IB6 celà fonctionnait également mais peut être pas quand la colonne en question est une colonne calculée.


Donc il vous reste les 2 autres solutions :

- Migrer sous FB1.5 ou IB7.x
- Utiliser une vue( ou PS) pour le select ... et faire un select ... group by sur cette vue (ou PS).
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2005, 08h38   #5
Membre régulier
 
Inscription : avril 2002
Messages : 97
Détails du profil
Informations forums :
Inscription : avril 2002
Messages : 97
Points : 91
Points : 91
Salut,

migrer sous FireBird... je crois savoir que c'est la même chose, mais j'ai commencé acec IB et je le sens pas plus que ça là... de plus j'ai enfin trouvé des outils conviviaux pour IB, alors...

cela dit si ces outils (IBEasy par exemple...) fonctionnent aussi avec FireBird je suis preneur...

non... j'ai cherché encore et encore, avec la piste que vous m'avez fournie dans la première réponse...

et j'ai trouvé comme quoi il faut persévérer...

la solution est très simple, une fois connue, il convient de placer dans le GROUP BY tous les champs du SELECT, ce qui donne
Code :
1
2
3
4
SELECT (CANT_NOM || ' / ' || DEPT_NUM) AS ID, CANT_NUM
FROM TCANTONS,TCOMMUNES
WHERE TCANTONS.CANT_NUM=TCOMMUNES.CANT_NUM
GROUP BY CANT_NOM, CANT_NUM, DEPT_NUM
et voilà le tour est joué... merci encore pour votre aide... et certainement à très bientôt vu que je vais persévérer dans IB...

@+
__________________
Ce n'est pas parce qu'on pédale dans la semoule, qu'on est sûr de manger du couscous... (anonyme)
Amenofis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2005, 09h57   #6
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Citation:
Envoyé par Amenofis
Salut,

migrer sous FireBird... je crois savoir que c'est la même chose, mais j'ai commencé acec IB et je le sens pas plus que ça là... de plus j'ai enfin trouvé des outils conviviaux pour IB, alors...
ca depend de ce que vous appelez la même chose.
Oui fb1.5 est compatible à 99.9% avec IB6, mais fb1.5 apporte des nouveautées et des corrections de bugs et évolue contrairement à IB6 qui lui est figée et n'évolura plus jamais (même pas de correction des bugs connus). IB6 est figé alors que FB ou IB7.X eux évoluent.

Citation:
Envoyé par Amenofis
cela dit si ces outils (IBEasy par exemple...) fonctionnent aussi avec FireBird je suis preneur...
Essayé c'est l'adopter

Citation:
Envoyé par Amenofis
non... j'ai cherché encore et encore, avec la piste que vous m'avez fournie dans la première réponse...

et j'ai trouvé comme quoi il faut persévérer...

la solution est très simple, une fois connue, il convient de placer dans le GROUP BY tous les champs du SELECT, ce qui donne
Code :
1
2
3
4
SELECT (CANT_NOM || ' / ' || DEPT_NUM) AS ID, CANT_NUM
FROM TCANTONS,TCOMMUNES
WHERE TCANTONS.CANT_NUM=TCOMMUNES.CANT_NUM
GROUP BY CANT_NOM, CANT_NUM, DEPT_NUM
et voilà le tour est joué... merci encore pour votre aide... et certainement à très bientôt vu que je vais persévérer dans IB...

@+
J'avais pas vu que vous n'aviez pas mis toutes les colonnes ds le group by..... Mais ca n'empèche que la solution avec l'index des colonne fonctionne sous FB et il me semblait que sous IB aussi.
Barbibulle 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 20h05.


 
 
 
 
Partenaires

Hébergement Web