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 :

Résultats avec des liaisons de table.


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 22
    Points : 11
    Points
    11
    Par défaut Résultats avec des liaisons de table.
    Bonjour,

    je suis confronté à un problème que beaucoup ont dû avoir :

    j'ai une table 'produits' et une table 'voitures' ainsi qu'une table pour lier les deux ('liaisons_produits_voitures'), sachant qu'il peut y avoir plusieurs voitures par produit.

    Ma question est : comment faire pour récupérer toutes les informations du produit ainsi que celles des voitures ?

    Etant donné que si j'ai 3 voitures sur un produit, avec cette requete, MYSQL va me retourner 3 lignes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT *
    FROM produits p
    LEFT JOIN liaisons_produits_voitures lpv
    ON lpv.id_produit=p.id
    LEFT JOIN voitures v
    ON v.id=lpv.id_voiture
    Si à ceci, je rajoute une table circuits et la table de jointures liaisons_produits_circuits. Et qu'un produit peut avoir 3 voitures sur 4 circuits

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT *
    FROM produits p
    LEFT JOIN liaisons_produits_voitures lpv
    ON lpv.id_produit=p.id
    LEFT JOIN liaisons_produits_circuits lpc
    ON lpc.id_produit=p.id
    LEFT JOIN voitures v
    ON v.id=lpv.id_voiture
    LEFT JOIN circuits c
    ON c.id=lpc.id_voiture
    il va me retourner 3 voitures * 4 circuits = 12 lignes pour ce produit

    Comment exploiter ces tables plus simplement ?

    Merci pour votre aide
    Clem

  2. #2
    Membre éclairé Avatar de pop_up
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 877
    Points : 786
    Points
    786
    Par défaut
    Je pense qu'il faut retravailler tes requetes et les adapter.

    par exemple tu dis :
    Etant donné que si j'ai 3 voitures sur un produit, avec cette requete, MYSQL va me retourner 3 lignes
    Tu peux essayer de faire ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT *
    FROM produits p
    LEFT JOIN liaisons_produits_voitures lpv
    ON lpv.id_produit=p.id
    INNER JOIN voitures v
    ON v.id=lpv.id_voiture
    enfin je connai pas exactement tes données donc a toi de voir ou mettre les INNER JOIN

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    Utiliser INNER JOIN ne changera pas mon problème, c'est la même chose que LEFT JOIN, mais sans retour de résultat s'il n'y a pas de correspondance entre les ID. Donc j'aurai toujours mes 3 lignes si les voitures sont présentent dans la table "voitures".

    Quelqu'un a t-il déjà été dans cette configuration ? faut-il simplement que je trie tous mes résultats avec PHP ?

Discussions similaires

  1. Réponses: 6
    Dernier message: 24/06/2007, 01h13
  2. probleme avec des border de table
    Par Joe Le Mort dans le forum Mise en page CSS
    Réponses: 14
    Dernier message: 01/03/2007, 16h21
  3. [VBA-A]Remplir une textbox avec des données de tables.
    Par cuicui08 dans le forum VBA Access
    Réponses: 1
    Dernier message: 24/03/2006, 10h28
  4. Peut on utiliser OR avec des jointures de tables??
    Par gins06 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/10/2005, 12h40
  5. Between avec des champs de tables
    Par talggir dans le forum Langage SQL
    Réponses: 3
    Dernier message: 24/05/2005, 09h11

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