IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Dernière image de chaque utilisateur


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    mai 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2006
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Dernière image de chaque utilisateur
    Hello,

    Sur une simple table qui contient des images, avec la date de création de l'image, et aussi l'id de l'utilisateur qui l'a créée, je voudrai faire ressortir LA DERNIERE IMAGE DE CHAQUE UTILISATEUR. (La dernière signifie la plus récente).

    Voici la structure de la table :
    idImg : int(6), clé primaire
    titre : varchar(30), not null
    idUser : int(6), not null
    dateCreation : datetime, not null

    Voici la requète (insatisfaisante) que j'ai faite :
    select idUser, idImg, titre
    from myimages
    group by idUser
    order by dateCreation DESC

    Cette requète me revoie une image par utilisateur, mais pas la plus récente!

    J'ai essaié pas mal d'autres manières de faire, mais rien de mieux, je suis bloqué!!
    Pourtant la réponse est surement simple, non??

    Florent


    [Titre édité par Maximilian]

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut


    Que penses-tu de ceci ? (tu n'as pas indiqué ta version de MySQL, si c'est < 4.1 ça ne fonctionnera peut-être pas ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT MI.idUser, MI.idImg, MI.titre
    FROM myimages AS MI
    WHERE MI.idImg = (
    <div style="margin-left:40px">SELECT MI2.idImg
    FROM myimages MI2
    WHERE MI2.idUser = MI.idUser
    ORDER BY dateCreation DESC
    LIMIT 1</div>)
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    mai 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2006
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Super! ça marche nikel!
    Mais effectivement je suis en mysql 5, et le pb est que mon hébergeur est en mysql 4.0! apparement ils devrait bientôt passer en 4.1 (c'est ovh).

    Je vais essaier de voir en la décomposant en deux requètes, mais ça me parait difficile à cause du "WHERE MI2.idUser = MI.idUser" central...

    En tout cas merci bcp :-)

  4. #4
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    c'est faisable en décomposant en deux requêtes indépendantes, mais c'est beaucoup plus couteux en temps de calcul et en mémoire...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT idUser
    FROM myimages
    puis pour chaque resultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT idImg, titre
    FROM myimages
    WHERE idUser = @id_user
    ORDER BY dateCreation DESC
    LIMIT 1
    ou alors faire ceci (ou équivalent) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    rslt = resultat de la requête : 'SELECT idUser, idImg, titre FROM myimages ORDER BY idUser, dateCreation DESC';
    ids = tableau vide;
    pour chaque ligne de rslt :
    <div style="margin-left:40px">si (ids[@idUser] n'existe pas) : 
    <div style="margin-left:40px">ids[@idUser] = {'idImg' => @idImg, 'titre' => @titre};</div></div>
    c'est peut-être encore cette solution la moins couteuse...
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    mai 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2006
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Oui, je vois, mais en effet je ne voulais pas passer par une boucle autour de requete sql, comme tu dis, c'est très couteux!

    En attendant, j'ai testé chez un autre hebergeur que j'aime bcp moins, mais qui lui est en mysql 4.1. Donc pour l'instant je vais faire avec la requete de ta première réponse qui est propre et rapide. j'espère qu'OVH vont bientôt déployer le 4.1!

    Merci encore!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 27/03/2008, 23h48
  2. placer une petit image devant chaque lien
    Par HwRZxLc4 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 02/06/2006, 18h25
  3. Recherche script d'affichage des dernières images ajoutées
    Par lepiou dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 01/06/2006, 21h03
  4. Moyenne 5 dernières année pour chaque année?
    Par kissmytoe dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/02/2006, 20h28
  5. limiter le debit internet de chaque utilisateur
    Par brown dans le forum Développement
    Réponses: 7
    Dernier message: 29/09/2004, 01h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo