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

Langage SQL Discussion :

Limit dans la jointure de droitre (LEFT JOIN)


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2005
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 52
    Points : 26
    Points
    26
    Par défaut Limit dans la jointure de droitre (LEFT JOIN)
    Bonjour,

    J'ai deux tables (Produits et Photos). Un produit peut avoir une, plusieurs, ou aucune photo. Je souhaite afficher tous les produits avec leur photo (si il y en a, sinon ça m'affiche quand même le produit mais la valeur null est indiqué dans la photo). Pas de problème, j'utilise la jointure LEFT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * 
    FROM Produit 
    LEFT JOIN Photos ON (photo_parent=id_produit)
    Je souhaiterais maintenant afficher seulement la première photo de tous les produits (si il n'y a pas de photo une valeur null sera retourné, mais mon produit devra bien sortir). Et c'est la où ça coince !

    Quelq'un aurait-il une idée, j'ai essayé avec limit et first, mais ça me limit le nombre de résultat des produits mais pas de photos.

    Si quelqu'un a une idée je suis prenneur car je cherche depuis plusieurs heures en vain.

    Merci d'avance ;-)

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    salut,

    comment tu définies le fait que c'est la 1ère photo?

  3. #3
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Comme dit cyber, le critère pourrait aider.

    Si c'est arbitraire, et que ta table photo a un id, tu peux prendre le min des id.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT *
    FROM TaRequete q
    WHERE COALESCE(photoid, 0) = 
    COALESCE(
    (SELECT min(photoid)
    FROM photo p
    p.photo_parent=q.id_produit), 0
    )
    Si tu as un critère, tu fais un truc à base de critere = min(critere) et min(id) pour départager les ex-aequos...

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

Discussions similaires

  1. Limitation dans une jointure
    Par Chiyori dans le forum Requêtes
    Réponses: 3
    Dernier message: 18/06/2014, 09h53
  2. Réponses: 0
    Dernier message: 19/03/2012, 16h37
  3. Réponses: 6
    Dernier message: 23/01/2007, 11h17
  4. [LEFT JOIN] Condition de jointure bizzare
    Par Celelibi dans le forum Requêtes
    Réponses: 7
    Dernier message: 17/05/2005, 19h38
  5. count() dans *plusieurs* LEFT JOIN
    Par silver_dragoon dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/06/2004, 18h20

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