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 :

LEFT rt RIGHT JOIN dans la même requete


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 100
    Points : 61
    Points
    61
    Par défaut LEFT rt RIGHT JOIN dans la même requete
    Bonjour
    je vais essayer de pas faire trop compliqué:

    j'ai une table candidat[c_id]
    une table région[r_id]
    et une table de liaison[c_id, r_id] qui permet d'affecter des candidats a une région.

    l'idée est d'afficher une liste de toutes les régions avec des checkbox, et de cocher celles ou je peux me déplacer.
    je valide le formulaire et ceci me créer des entrées dans la table liaison.

    je veux pouvoir revenir sur mon formulaire et précocher les régions qui sont déja sélectionnées.
    avec plusieurs requete ok c'est pas un probleme mais je trouve pas ca tres propre.
    DONC ma question: peut-on faire cela avec une seule requete?

    moi je faisais ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM candidat 
    LEFT JOIN liaison On liaison.c_id=candidat.c_id
    RIGTH JOIN region ON region.r_id=liaison.r_id
    et ceci affiche bien toutes les regions, meme si aucune liaison n'est définies.
    PAr contre j'ai besoin de connaitre les régions du candidat en question:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT * FROM candidat 
    LEFT JOIN liaison On liaison.c_id=candidat.c_id
    RIGTH JOIN region ON region.r_id=liaison.r_id
    WHERE c_id=$candidat_id
    et la ca ne marche plus... forcement ca ne prends que les cas ou le c_id=$candidat_id

    vous avez une idée ou la solution?

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 034
    Points : 23 779
    Points
    23 779
    Par défaut
    Bonjour,

    Je ne suis pas sûr d'avoir tout bien compris , mais est-ce qu'en mettant la condition du WHERE dans la première condition de jointure, ça ne résout pas le problème ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM candidat 
    LEFT JOIN liaison ON liaison.c_id=candidat.c_id AND c_id = $candidat_id
    RIGHT JOIN region ON region.r_id=liaison.r_id
    ced

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 100
    Points : 61
    Points
    61
    Par défaut
    en fait les jointures ne marchent pas tout a fait comme cela, aprés le ON il faut faire apparaitre le champs de jointure entre les deux tables.

    Bref je ne suis pas sure que la solution existe en une seule requete. Mais si vous avez des pistes...

  4. #4
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 034
    Points : 23 779
    Points
    23 779
    Par défaut
    Ah non ... Les conditions de jointures ne se limitent pas à la liste des champs correspondants dans les 2 tables, bien au contraire. On peut y faire figurer tout un tas de conditions, surtout dans le cas des jointures externes...

    Et notamment dans le cas présent.
    Comme je n'ai pas bien saisi les tenants et les aboutissants de ton exemple, ma requête ne fait peut-être pas ce que tu souhaites, mais l'idée est là...

    ced

Discussions similaires

  1. SELECT et UPDATE dans une même requete
    Par gael dans le forum Langage SQL
    Réponses: 6
    Dernier message: 24/01/2011, 01h57
  2. 2 order by différents dans une même requete
    Par Christophe P. dans le forum SQL
    Réponses: 5
    Dernier message: 12/06/2007, 14h03
  3. plusieurs count dans la même requete
    Par lmorali dans le forum Requêtes
    Réponses: 1
    Dernier message: 15/05/2007, 10h17
  4. [SQL2K] Deux count dans une même requete
    Par maitrebn dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/02/2007, 17h12
  5. [MySQL] 2 critères de selections opposés dans 1 même requete
    Par zimotep dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 27/02/2006, 08h57

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