[RESOLU] Group By Separator

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Group By Separator

Re: [RESOLU] Group By Separator

par Ryle » 23 mars 2021, 19:55

Salutations !

La fonction GROUP BY a pour objectif d'indiquer au moteur SQL quelles champs de ta requête ne sont pas agrégés par une fonction (count, avg, sum...) et doivent faire l'objet d'un regroupement. Ces champs doivent être mentionnés explicitement, et un " SELECT * " est à proscrire avec un GROUP BY (même MySQL semble gérer le group by à sa façon, ce qui peut parfois donner des résultats intéressant)

Le message d'erreur que tu as obtenu " Notice: Undefined index: Fam " t'indique simplement que php ne trouve pas d'index nommé Fam dans le résultat de ta requête. Et pour cause, tu ne retournes pas la valeur de Fam, mais une chaine concaténée " GROUP_CONCAT( `Fam` SEPARATOR ' | ' ) " qui n'a pas de nom. Il te suffit d'ajouter un alias à cette colonne virtuelle pour que php puisse l'utiliser : " GROUP_CONCAT( `Fam` SEPARATOR ' | ' ) AS ma_colonne_groupee "

Re: Group By Separator

par Figuedi » 22 mars 2021, 19:01

En fait cela fonctionne parfaitement sur la SQL en ligne mais pas sur la SQL de Wamp.

Donc résolu magiquement

Re: Group By Separator

par Figuedi » 22 mars 2021, 18:33

là cela fonctionne
$query = "SELECT * FROM pieces where (Fam LIKE '".$name."' OR Des LIKE '".$name."' OR Parts LIKE '".$name."') GROUP BY Parts";
Mais je ne peux pas choisir le séparateur il colle les valeurs dans Fam sans espace ni rien

Group By Separator

par Figuedi » 22 mars 2021, 17:59

Bonjour,

J'essaie de récupérer les valeurs dans ma table et de les grouper
$query = "SELECT Des, Parts, Fam FROM pieces where (

        Fam LIKE '".$name."' OR Des LIKE '".$name."' OR Parts LIKE '".$name."') 

    AND (Fam LIKE '".$name2."' OR Des LIKE '".$name2."' OR Parts LIKE '".$name2."') 

    AND (Fam LIKE '".$name3."' OR Des LIKE '".$name3."'OR Parts LIKE '".$name3."') GROUP BY (Fam ) ";
Là ça marche
Comme j'ai lu qu'il fallait faire comme ça
SELECT `id`, GROUP_CONCAT( `nom_colonne` SEPARATOR ' ' )
FROM `table`
GROUP BY `id`

J'essaie de rajouter un séparateur et là j'ai des erreurs fatales sur ma requête
$query = "SELECT Des, Parts, GROUP_CONCAT( `Fam` SEPARATOR ' | ' ) FROM pieces where (....

Il m'envoie bouler
! ) Notice: Undefined index: Fam in C:\wamp64\www\RecBdd\parts2.php on line 89