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 :

Requête SQL avec multiples jointures


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 143
    Par défaut Requête SQL avec multiples jointures
    Bonjour je viens chercher de l'aide !

    Je vous explique j'ai une petit site ou les membres peuvent créer des actus avec des galeries photos toutes ces actus s'affichent sur la même page sous forme de liste. Les galeries photos s'ouvrent en lightbox.
    Les membres peuvent également commenter les actualités.
    J'ai une BDD avec 4 tables
    tb_membre => id, nom, prenom, avatar
    tb_actu => id, texte, id_membre, date
    tb_commentaire => id, id_actu, id_membre, date, texte
    tb_photo => id, id_actu, nom_image

    je veux faire une requête qui récupère tout d'un coup vu que les requêtes imbriquées dans des boucles ne sont pas très appréciées...
    voici celle que j'ai faite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    SELECT DISTINCT
    						actu.id_actu, 
    						actu.titre_actu,
    						actu.texte_actu,
    						actu.date_actu,
    						photo.nom_photo,
    						photo.nom_mini_photo,
    						commentaire.date_commentaire_actu,
    						commentaire.texte_commentaire_actu,
    						membreActu.nom_membre AS nom_membre_auteur,
    						membreActu.prenom_membre prenom_membre_auteur,
    						membreActu.avatar_membre avatar_membre_auteur,
    						membreCom.nom_membre AS nom_membre_commentaire,
    						membreCom.prenom_membre AS prenom_membre_commentaire,
    						membreCom.avatar_membre AS avatar_membre_commentaire
    				    FROM tb_actu actu
    					LEFT  OUTER JOIN tb_commentaire_actu commentaire ON actu.id_actu = commentaire.id_actu
    					LEFT  OUTER JOIN tb_photo_actu photo ON actu.id_actu = photo.id_actu
    					LEFT  OUTER JOIN  tb_membre membreActu ON membreActu.id_membre = actu.id_membre
    					LEFT  OUTER JOIN  tb_membre membreCom ON membreCom.id_membre = commentaire.id_membre
    					GROUP BY commentaire.id_commentaire_actu, photo.id_photo
    					ORDER BY actu.date_actu DESC, photo.position_photo ASC, commentaire.date_commentaire_actu ASC
    le problème c'est que je n'arrive pas a récupérer les photos et les commentaires sans doublons...
    Je pense qu'il y a de grosses erreurs dans ma requête mais je n'ai pas l'habitude des requêtes a multiple jointure...
    Si quelqu'un a une idée.
    Merci d'avance.

  2. #2
    Membre confirmé
    Inscrit en
    Novembre 2009
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 49
    Par défaut
    Bonjour,

    C'est normal.

    Tu as :
    - une actu peut avoir de 0 à n photos
    - une actu peut avoir de 0 à n commentaires

    Or les photos et les commentaires ne sont pas liés. Pourtant tu les utilises dans la même requête.
    Alors la requête va retourner pour chaque article n lignes par photos et n ligne par commentaires.

    Ex :
    Article A a 2 photos PhotoA et PhotoB
    Article A a 3 commentaires ComA et ComB et ComC

    Alors la requête retourner un truc style :
    Article A - Photo A - Com A
    Article A - Photo A - Com B
    Article A - Photo A - Com C
    Article A - Photo B - Com A
    Article A - Photo B - Com B
    Article A - Photo B - Com C

    Donc fais plutôt 2 requêtes, c'est plus simple...

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 143
    Par défaut
    Oui ça me donne un truc qui multiplie les entrées entre elles...
    Bon et bien s'il n'y a pas de solution plus propre je vais faire 2 requêtes.

Discussions similaires

  1. Problème requête sql avec plusieurs jointures
    Par CocoX02 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 19/02/2015, 13h33
  2. Requête sql avec jointure et table vide (ou tuple nulle)
    Par Aenur56 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 29/04/2010, 14h10
  3. Construction d'une requête SQL avec jointure
    Par Didiou35 dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/10/2009, 22h26
  4. Requête SQL avec jointure
    Par manu32320 dans le forum Zend_Db
    Réponses: 3
    Dernier message: 17/05/2009, 00h19
  5. Requête SQL avec jointure sur trois tables
    Par pit2121 dans le forum SQL
    Réponses: 0
    Dernier message: 19/05/2008, 20h24

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