| |
|
Voir le sujet précédent :: Voir le sujet suivant
|
| Auteur |
Message |
| |
|
Dharius WRInaute passionné

Inscrit le: 06 Avr 2005 Messages: 552
|
Posté le : Mar Mai 13, 2008 21:44 Sujet du message: MySQL : SELECT spécial avec GROUP BY sur condition ? |
|
|
Bonjour,
je voulais savoir si quelqu'un sait si il est possible de faire un GROUB BY sur condition ...
Exemple : j'ai 2 champs (entre autre) dans une table : id et id_pere, et je voudrait grouper par id_pere si id_pere n'est pas null, sinon, si id_pere est null, on groupe pas...
Une requète qui pourrait donner
"SELECT * FROM table WHERE 1 GROUP BY id_pere IF id_pere !=0"
... si seulement c'était si simple...
Une idée ?! Merci ! |
|
| |
|
 |
Bacteries WRInaute accro

Inscrit le: 27 Mai 2004 Messages: 1126 Localisation: France - Nantes
|
Posté le : Mar Mai 13, 2008 22:09 Sujet du message: MySQL : SELECT spécial avec GROUP BY sur condition ? |
|
|
Bizarre comme "envie". Un group by va regrouper par id_pere dans ton cas. Tu auras ceux avec un id_pere null, ceux avec id_pere = 1, ...
Là tu chercherais pas plutôt à trier sur l'id père? |
|
| |
|
 |
jcaron WRInaute passionné

Inscrit le: 13 Fév 2004 Messages: 523 Localisation: Paris
|
Posté le : Mar Mai 13, 2008 22:26 Sujet du message: Re: MySQL : SELECT spécial avec GROUP BY sur condition ? |
|
|
| Dharius a écrit: |
je voulais savoir si quelqu'un sait si il est possible de faire un GROUB BY sur condition ...
Exemple : j'ai 2 champs (entre autre) dans une table : id et id_pere, et je voudrait grouper par id_pere si id_pere n'est pas null, sinon, si id_pere est null, on groupe pas...
Une requète qui pourrait donner
"SELECT * FROM table WHERE 1 GROUP BY id_pere IF id_pere !=0"
... si seulement c'était si simple...
Une idée ?! Merci ! |
Je ne suis pas sûr de bien comprendre, mais tu peux essayer:
SELECT COALESCE(id_pere,id),... FROM table GROUP BY 1
Si tu as plus de détails sur ce que tu cherches à faire ça pourrait aider...
Jacques. |
|
| |
|
 |
YoyoS WRInaute accro

Inscrit le: 14 Sep 2006 Messages: 2440
|
Posté le : Mar Mai 13, 2008 23:46 Sujet du message: MySQL : SELECT spécial avec GROUP BY sur condition ? |
|
|
A je savais pas qu'il y avait coalesce sur php, je l'apprends , je croyais que c'était un truc à oracle -_-
Salut Dharius, alors pour que les choses soient claires, id_pere peut etre = 0 ou être NULL ? Car c'est complètement différent.
Je te l'aurais bien faite ta requête mais c'est pas très claire ton histoire de group by avec condition null ou non null . Explique nous plutôt clairement ce que tu veux récupérer parce que faire une requête sans connaitre ce qu'on doit obtenir, y a pas pire -_-
Donc tu as par exemple une table comme ceci:
id id_pere
-- -------
1 1
2 2
3 2
4 3
5 0
6 1
7 2
8 5
9 1
10 0
Tu veux que la requête te retourne quoi clairement ?
C'est bêtement ça que tu veux ? :
| Code: |
| SELECT * FROM table WHERE id_pere != 0 GROUP BY id_pere |
|
|
| |
|
 |
jcaron WRInaute passionné

Inscrit le: 13 Fév 2004 Messages: 523 Localisation: Paris
|
Posté le : Mer Mai 14, 2008 0:16 Sujet du message: MySQL : SELECT spécial avec GROUP BY sur condition ? |
|
|
| YoyoS a écrit: |
A je savais pas qu'il y avait coalesce sur php, je l'apprends , je croyais que c'était un truc à oracle -_-  |
Ce n'est pas du php mais du SQL... Ceci dit, je suppose que ça existe avec mysql, mais j'en sais trop rien.
Sinon une autre alternative:
SELECT id_pere,... FROM table WHERE id_pere IS NOT NULL GROUP BY id_pere UNION ALL SELECT id_pere,... FROM table WHERE id_pere IS NULL
Enfin, toujours en supposant que j'aie vaguement compris ce qui est voulu...
Jacques. |
|
| |
|
 |
Dharius WRInaute passionné

Inscrit le: 06 Avr 2005 Messages: 552
|
Posté le : Mer Mai 14, 2008 7:57 Sujet du message: MySQL : SELECT spécial avec GROUP BY sur condition ? |
|
|
| Oui, je me suis mal exprimé : on groupe pas les résultats qui ont id_pere = 0 , par contre on groupe les autres qui ont un id_pere commun |
|
| |
|
 |
jcaron WRInaute passionné

Inscrit le: 13 Fév 2004 Messages: 523 Localisation: Paris
|
Posté le : Mer Mai 14, 2008 9:58 Sujet du message: MySQL : SELECT spécial avec GROUP BY sur condition ? |
|
|
| Dharius a écrit: |
| Oui, je me suis mal exprimé : on groupe pas les résultats qui ont id_pere = 0 , par contre on groupe les autres qui ont un id_pere commun |
SELECT id_pere,... FROM table WHERE id_pere<>0 GROUP BY id_pere UNION ALL SELECT id_pere,... FROM table WHERE id_pere=0
Jacques. |
|
| |
|
 |
YoyoS WRInaute accro

Inscrit le: 14 Sep 2006 Messages: 2440
|
Posté le : Mer Mai 14, 2008 10:32 Sujet du message: MySQL : SELECT spécial avec GROUP BY sur condition ? |
|
|
Je savais pas non plus que les opérateurs ensemblistes fonctionnaient sur php, non mysql pardon ;p
A oui c'est l'INTERSECT qui ne va pas  |
|
| |
|
 |
| |
|
|
|
|
Autres sujets de discussion :
|
|