begin process at 2012 05 31 14:45:11
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

Bases de données

 > 

requete GROUP BY


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

requete GROUP BY

lundi 7 novembre 2005 à 22:56:00 | requete GROUP BY

rissoux

Bonjour,
J'ai fait un site album photos, les photos sont classées par catégories et sous-catégories.
Je voudrais que lorsque l'on arrive sur la page catégorie il y ai la dernière photo enregistrée de chaque sous catégorie qui s'affiche.
J'ai fait :

$query = "SELECT * FROM photos WHERE Cat ='Voyages'  GROUP BY SCat DESC ";

Ou encore :

$query = "SELECT MAX(ID),Cat,SCat,Img FROM photos WHERE Cat ='Voyages'  GROUP BY SCat DESC ";

Mais c'est toujours la première photo enregistrée et non la dernière qui s'affiche.

Est-ce que quelqu'un peut m'éclairer sur mon erreur ?

Merci.
mardi 8 novembre 2005 à 00:45:42 | Re : requete GROUP BY

sjon

Sael og blesud

BY ORDER ASD ... ;-)

Bon courage ...

NB : Si la réponse vous convient merci de l'accepter pour fermer ce thread ...

Sigurjón Bírgir Sigurðssón aka Sjón
mardi 8 novembre 2005 à 01:22:24 | Re : requete GROUP BY

FhX

asc plutot non ?
mardi 8 novembre 2005 à 07:52:55 | Re : requete GROUP BY

sjon

Sael og blesud

C'est sûr ... Lol ... ;-)

Bon courage ...

NB : Si la réponse vous convient merci de l'accepter pour fermer ce thread ...

Sigurjón Bírgir Sigurðssón aka Sjón
mardi 8 novembre 2005 à 09:42:10 | Re : requete GROUP BY

monoceros01

Moi personnellement je ferai (oui c'est au futur et non au conditionnel, je vais refaire ma galerie ;p) :
table categories :
  - id
  - nom
  - description

table images :
  - id
  - id_cat
  - url
  - titre
  - auteur
  - descriptions
  - date



et ma requête :
$query = ' SELECT nom, date FROM images ' ;  // Les champs que je vais utiliser. je ne récupère pas url, car j'affiche les miniature correspondantes qui sont de la forme /minis/[id].jpg
$query.= ' WHERE id_cat = '.$id_categorie ;  // Pour bien sélectionner uniquement les image d'une catégorie
$query.= ' ORDER BY date DESC ';  // Ordonner du plus récent au plus vieux
$query.= ' LIMIT 1 ';  // Prendre le premier résultat uniquement


mardi 8 novembre 2005 à 10:13:02 | Re : requete GROUP BY

rissoux

Salut, et merci d'avoir répondu aussi rapidement,

Mon problème c'est que je n'ai pas que des catégories.

Dans mon album, j' ai 3 pages : Voyages, Famille, Divers.
Dans ces 3 pages les sous-catégories se crées au fur et à mesure.
Exemple :
Dans Voyages il y aura un sous-menu :
- Bretagne
- Camargue
- etc... quand j'ajouterai des photos d'un autre voyage...

Quand j'arrive sur Voyages je voudrais que la dernière photo de chaque sous-catégories s'affiche.
Avec ma requete, si je mets un ORDER BY, c'est le résultat de ma requete qui est classé, et je ne vois pas comment demander un classement à l'intèrieur de la sous-catégorie ?

J'arrive à ce résultat en faisant :

$query = "SELECT DISTINCT SCat FROM photos WHERE Cat ='Voyages' ORDER BY ID DESC";
 $res = mysql_query($query) or die($query.'<br>'.mysql_error());
 $nombre = mysql_num_rows($res);
 while ($row = mysql_fetch_array($res,MYSQL_ASSOC))
 {
 $scat = $row['SCat'];
 $qr = "SELECT * FROM photos WHERE Cat ='Voyages' AND SCat ='$scat'  ORDER BY ID DESC LIMIT 1";

Mais j'aurais aimé pouvoir le faire en une seule requete !!!

Ce doit bien être possible.
 
mardi 8 novembre 2005 à 11:06:16 | Re : requete GROUP BY

monoceros01

Personnellement, je pense que ta table, telle que je l'apeçois à travers tes requêtes, n'est pas très bien conçue.

J'ai l'impression qu'a chaque photo, tu es obligé de répéter le nom de la catégorie et de la sous-catégorie d'appartenance.
Et ça, vois-tu, c'est une grosse erreur de structure. Normalement, il NE DOIT PAS y avoir de répétition de données dans un base de données!

Je te conseil de faire quelque chose de ce genre :
table catégories :
  - id (PRIMARY KEY, auto_increment)
  - id_parent
  - nom

table photos :
  - id
  - id_cat
  - nom
  - url
  - etc...

Ainsi, tu ne répète qu'un petit nombre (id dans table catégorie <=> id_cat dans table photos) et c'est beaucoup plus simple.
Pour la hierarchie entre catégories, elle est représentée par id_parent qui est égale à 0 si c'est une catégorie de base, et égale à l'id de la catégorie si c'est une sous-catégorie.

Par contre, il ne me semble pas possible de tout faire en une seule requête... (Mais je peux me tromper =) )
mardi 8 novembre 2005 à 13:37:56 | Re : requete GROUP BY

rissoux

Merci monoceros01, et je suis tout à fait d'accord avec toi, j'aurais dû faire 2 tables, mais j'ai fait ça dans l'urgence et ma table ne contient que 5 champs.
A présent j'ai le temps et je vai tout reprendre.

Je pense moi aussi que je n'arriverai pas à faire une seule requête et c'est bien dommage ! ;-)
mardi 8 novembre 2005 à 13:47:19 | Re : requete GROUP BY

monoceros01

Réponse acceptée !
Bon j'avais pas le temps d'y réflechir car j'étais au boulot. Mais de toute façon, dans une même catégorie, je suppose que tu vas vouloir lister les sous categories. Ce qui implique une requête de ce type :
$query = 'SELECT id,nom FROM categorie WHERE id_parent='.$id_categorie_actuelle.' ORDER BY nom ASC' ;

Et dans tous les cas tu devras faire une boucle pour afficher tes catégories.
Donc dans la boucle tu devra mettre :
$query = 'SELECT url FROM photos WHERE id_cat = '.$data['id'].' ORDER BY date DESC LIMIT 1' ;

Bon ce qui est embêtant c'est que ça fait une requête par catégorie... Mais je ne sais pas si on peut faire mieux...

mardi 8 novembre 2005 à 18:10:44 | Re : requete GROUP BY

rissoux

Ce que j'ai fait fonctionne très bien aussi :

$query = "SELECT DISTINCT SCat FROM photos WHERE Cat ='Voyages' ORDER BY ID DESC";
 $res = mysql_query($query) or die($query.'<br>'.mysql_error());
 $nombre = mysql_num_rows($res);
 while ($row = mysql_fetch_array($res,MYSQL_ASSOC))
 {
 $scat = $row['SCat'];
 $qr = "SELECT * FROM photos WHERE Cat ='Voyages' AND SCat ='$scat'  ORDER BY ID DESC LIMIT 1";

J'utilise un while, mais ça revient au même, je crois que je vai en rester là. Mais j'aime bien chercher donc ....

Merci encore de ton aide



Cette discussion est classée dans : photos, cat, group, by, scat


Répondre à ce message

Sujets en rapport avec ce message

pb avec un `group by` [ par eax ] salut à tous!!g un soucis avec une requete et je pense que c pas très compliqué, mais je trouve pas:g une table `photos` avec un champ date (date d'up group by... order by [ par kyript ] bonjour a tous context: forum j'affiche sur une page les noms des sujets qui ont les messages les plus récent. ensuite je les groupe par sujet puis a Group By / Order by [ par j3r3m067 ] Bonjour à tous, VOila j'ai un peut probleme, j'ai une requete toute simple: [code=autre]select qualification.titre from qualification where (archive Séparer le résultat de mon order by par un ligne vierge. [ par ecolom ] Bonjour à tous, Mon bout de code ci-desous permet d'afficher une partie de résultat dans une page avec une option pour visualiser le restant des don Problème: Galerie d'images [ par Kronikerz ] Bonjour, Je créer une galerie d'images, mais je rencontre un problème et j'aimerais des conseils, voir une solution. Les photos de ma galerie se tro Galerie photos: Miniature + rognage [ par Kronikerz ] Bonjour, Je suis à la recherche de 2 scripts: le premier permettant de miniaturiser une image, tout en gardant les proportions. Le second dans le b Problème requete d'insertion selon les différents navigateurs!!!! [ par chris91160 ] Bonjour tout le monde! déjà merci d'avance meme si vous n'arrivez pas à m'aider!lol[^^happy3] voilà jai un problème avec le dernier site web que je c Formulaire d inscriptions avec Gestion membre + photos [ par screenzz ] Bonsoir, Je me permet de faire ce post car je suis a la recherche d un formulaire d inscription avec gestion de membre et possibilité d ajouter des p upload [ par cryba ] bonjour, j'ai un formulaire qui recupère des infos et ses infos sont stockés dans une base de données.Dans ce formulaire je recupére des photos et des load data in file.... erreurs 1045 et 1148 [ par hdh ] Bonjour Je viens de changer d'hébergement pour passer à la pointure audessus mais les imports que je faisais en load data in file ne fonctionnent plu


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,608 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales