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 :

Pb de jointure (le retour)


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 414
    Points : 187
    Points
    187
    Par défaut Pb de jointure (le retour)
    Bonjour à tous,

    Ce matin je patauge sur un pb qui doit être simple à résoudre pour un spécialiste :

    Je veux faire une requête jointe sur deux tables mais la 2nd table n'a pas nécessairement de résultat à la requête.

    Comment faire pour obtenir néanmoins le résultat partiel.

    J'imagine que ceci doit avoir à faire avec LEFT-JOIN RIHGT JOIN mais comment ?

    D'avance merci pour vos conseils

    Cdlt

  2. #2
    Membre du Club Avatar de Arunna
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2013
    Messages : 34
    Points : 54
    Points
    54
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT column_name(s)
    FROM table_name1
    RIGHT JOIN table_name2
    ON table_name1.column_name=table_name2.column_name
    RIGHT JOIN renvoie toutes les lignes de la table de droite (table_name2), même s'il n’y a pas de correspondance dans la table de gauche (table_name1).

    LEFT JOIN renvoie toutes les lignes de la table de gauche (table_name1), même s'il n'ya pas de correspondance dans la table de droite (table_name2).

    FULL JOIN renvoie toutes les lignes

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 414
    Points : 187
    Points
    187
    Par défaut
    Merci pour ta réponse hyper claire et hyper rapide.

    Je regarde ceci dans l'AM.

    Cdlt

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 414
    Points : 187
    Points
    187
    Par défaut
    Je reviens vers toi, en fait ta requête ne fonctionne pas.

    Mon script d'origine est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT * 
    FROM init, Client
    WHERE init.Email =  '".$_POST['Email']."'
    AND init.NumDoss =  '".$_POST['Mdp']."'
    AND Client.IdClient = init.ClientId
    Ce script fonctionne bien quand la requête sur Client & init retourne des résultats mais ne fonctionne plus si Client.IdClient n'existe pas !

    Comment faire ? J'ai retourné ta requête dans tous les sens rien ni fait, Grrrr!

    D'avance merci.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    Par défaut
    Bonsoir,

    la requête que tu donne n'utilise pas de jointures externe,

    une petit cours d'SQLPro sur les jointures.

    Pour ta requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT -- Liste des colonnes éviter *
    FROM init
    LEFT JOIN Client ON Client.IdClient = init.ClientId
    WHERE init.Email =  '".$_POST['Email']."'
    AND init.NumDoss =  '".$_POST['Mdp']."'
     
    -- Si par contre il faut que tous les clients soit retournés même s'il ne sont pas présent dans la table init
    SELECT -- Liste des colonnes éviter *
    FROM init
    RIGHT JOIN Client ON Client.IdClient = init.ClientId
    WHERE init.Email =  '".$_POST['Email']."'
    AND init.NumDoss =  '".$_POST['Mdp']."'
    une réponse vous a permis d'avancer ?

  6. #6
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Citation Envoyé par Exia93 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    -- Si par contre il faut que tous les clients soit retournés même s'il ne sont pas présent dans la table init
     
    FROM init
    RIGHT JOIN Client ON Client.IdClient = init.ClientId
    WHERE init.Email =  '".$_POST['Email']."'
    AND init.NumDoss =  '".$_POST['Mdp']."'
    Attention, dans ce cas il faut remonter les filtres sur init dans la clause de jointure, cf : Jointure externe et condition de restriction.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 414
    Points : 187
    Points
    187
    Par défaut
    Merci beaucoup pour ta réponse.

    Elle fonctionne parfaitement.

    Enfin merci pour ton clin d'œil à propos de mon perfectionnement sur les jointures dont j'ai un impératif besoin.

    Cdlt

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

Discussions similaires

  1. [MySQL-5.5] Jointure retour multiple
    Par deuxk dans le forum Requêtes
    Réponses: 1
    Dernier message: 14/09/2013, 15h22
  2. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  3. jointure linq , retour de plusieurs lignes
    Par firas123456 dans le forum Linq
    Réponses: 1
    Dernier message: 06/06/2012, 08h01
  4. [HQL] jointure et valeur de retour
    Par Nexussmb dans le forum Hibernate
    Réponses: 1
    Dernier message: 02/07/2008, 13h08
  5. URGENT: retour de string
    Par Pinggui dans le forum CORBA
    Réponses: 4
    Dernier message: 15/07/2002, 09h47

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