MySQL : SELECT spécial avec GROUP BY sur condition ?

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Dharius, 13 Mai 2008.

  1. Dharius
    Dharius WRInaute impliqué
    Inscrit:
    6 Avril 2005
    Messages:
    741
    J'aime reçus:
    0
    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 !
     
  2. Bacteries
    Bacteries WRInaute passionné
    Inscrit:
    27 Mai 2004
    Messages:
    1 253
    J'aime reçus:
    0
    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?
     
  3. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    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.
     
  4. YoyoS
    YoyoS WRInaute accro
    Inscrit:
    14 Septembre 2006
    Messages:
    3 226
    J'aime reçus:
    0
    A je savais pas qu'il y avait coalesce sur php, je l'apprends :), je croyais que c'était un truc à oracle -_- :D


    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 -_- :D

    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
     
  5. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    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.
     
  6. Dharius
    Dharius WRInaute impliqué
    Inscrit:
    6 Avril 2005
    Messages:
    741
    J'aime reçus:
    0
    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
     
  7. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    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.
     
  8. YoyoS
    YoyoS WRInaute accro
    Inscrit:
    14 Septembre 2006
    Messages:
    3 226
    J'aime reçus:
    0
    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 :)
     
Chargement...
Similar Threads - MySQL SELECT spécial Forum Date
Mysql sélection aléatoire d'une colonne Développement d'un site Web ou d'une appli mobile 18 Novembre 2016
[MySQL] Liste (select) avec des lignes au hasard Développement d'un site Web ou d'une appli mobile 23 Octobre 2014
[MySQL] Requête SELECT et INSERT entre 3 tables liées+Aide Développement d'un site Web ou d'une appli mobile 30 Avril 2014
[MySQL] sélectionner la dernière note pour chaque élève en une seule requète ? Développement d'un site Web ou d'une appli mobile 12 Avril 2012
[MySQL] Requête SELECT entre 3 tables liées Développement d'un site Web ou d'une appli mobile 10 Août 2011
Mysql : select sur plusieurs tables? Développement d'un site Web ou d'une appli mobile 20 Juillet 2011
[PHP/SQL] Associer plusieurs SELECT de tables MySQL Développement d'un site Web ou d'une appli mobile 27 Novembre 2010
Mysql : select d'une valeur dans un champs en contenant plusieurs Développement d'un site Web ou d'une appli mobile 27 Janvier 2010
[MySQL] : select de 2 tables et mysql_fetch_assoc Développement d'un site Web ou d'une appli mobile 22 Septembre 2009
[mysql+php] Insert....select et modifications au passage Développement d'un site Web ou d'une appli mobile 18 Août 2009
[résolu][MySQL] Sélection groupée et comptage Développement d'un site Web ou d'une appli mobile 22 Septembre 2008
MySql selection sans doublon (select distinct) Développement d'un site Web ou d'une appli mobile 18 Septembre 2008
Update / Select et Mysql Développement d'un site Web ou d'une appli mobile 28 Février 2008
[Résolu] Mysql : Select avec un except Développement d'un site Web ou d'une appli mobile 11 Janvier 2008
Select where MYSQL Développement d'un site Web ou d'une appli mobile 4 Avril 2007
Petit calcul sous MySql / Select Développement d'un site Web ou d'une appli mobile 6 Mars 2007
[Résolu] Update / Select LEFT JOIN / et mysql Développement d'un site Web ou d'une appli mobile 31 Mai 2006
mysql & subselect Administration d'un site Web 1 Février 2005
fONCTION select mysql Administration d'un site Web 5 Juillet 2004
Mysql : Impact convertion champ numérique SMALLINT vers BIGINT Développement d'un site Web ou d'une appli mobile 23 Août 2021