clause GROUP BY

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


xdeslandes
WRInaute impliqué
WRInaute impliqué
 
Messages: 314
Inscription: Mer Déc 29, 2004 20:17

clause GROUP BY

Message le Mer Juin 20, 2007 9:14

Bonjour,

Dans une boutique en ligne, beaucoup d'articles ont des déclinaisons (par ex., un même vêtement existe en plusieurs tailles et plusieurs coloris, etc). Dans mon cas, cela concerne du thé: un article (un thé quoi) peut se vendre en 4 conditionnements différents (100g, 200g, 500g, et 1kg).
Pour afficher les articles dans les rayons, j'ai donc une requête qui ressemble à
Code: Tout sélectionner
"SELECT * FROM articles, categories WHERE ... GROUP BY nom_article ORDER BY id_article..."

Tout est cool: chaque article est listé une seule fois, et en conditionnement 100g, comme voulu (il faut savoir que dans la bdd, les articles sont bien saisis dans le bon ordre) SAUF POUR UN ARTICLE (sur 450) !! Cet article apparaît en 200g par défaut !!
Question: lorsqu'on utilise la clause GROUP BY, comment sont ordonnés les items à l'intérieur ? Dans mon exemple, comment sont classés les 4 thés ayant le même nom ?
Merci de votre aide.

skippyzrnr
WRInaute passionné
WRInaute passionné
 
Messages: 658
Inscription: Mar Jan 11, 2005 10:08

Message le Mer Juin 20, 2007 9:36

Il me semble que l'enregistrement representatif du GROUP BY est le premier trouvé dans la table.
Au cas où recrée ta table correctement ordonnée.


lupuz
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 207
Inscription: Mer Mar 15, 2006 23:41

Message le Mer Juin 20, 2007 9:44

Tu devrais remplacer ta requete select ...group by..
Par :
SELECT distinct... order by...


xdeslandes
WRInaute impliqué
WRInaute impliqué
 
Messages: 314
Inscription: Mer Déc 29, 2004 20:17

Message le Mer Juin 20, 2007 12:39

Merci les amis ! J'essaie de suite.


xdeslandes
WRInaute impliqué
WRInaute impliqué
 
Messages: 314
Inscription: Mer Déc 29, 2004 20:17

Message le Mer Juin 20, 2007 12:47

SELECT DISTINCT n'a pas fonctionné. Je me demande pourquoi. Il est vrai que ma requête est en réalité bien plus complexe que ce que j'avais écrit.
Par contre, j'ai réordonné ma table suivant les id_articles croissants (via PhpMyAdmin), et c'est devenu OK !!
Merci à vous. Prob résolu.

jeroen
WRInaute accro
WRInaute accro
 
Messages: 2384
Inscription: Ven Aoû 30, 2002 13:35

Message le Mer Juin 20, 2007 16:32

Pour aller plus loin :
- Distinct serait plus approprié car moins consommateur de ressources
- Pour ce qui est de l'ordonnancement des items interne ce n'est pas automatiquement le premier rencontré, mais je ne sais pas comment ça marche exactement. J'ai résolu le problème en faitans une jointure sur la même table

Code: Tout sélectionner
SELECT t1.id, min(t2.cond) as cond
FROM table t1, table t2
WHERE t1.id=t2.id AND ....
GROUP BY t1.id


Si ça peut servir


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités