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

MySQL Discussion :

LEFT OUTER JOIN (supprime les enregistrements de table gauche)


Sujet :

MySQL

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Chef de projet MOA
    Inscrit en
    Décembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Décembre 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut LEFT OUTER JOIN (supprime les enregistrements de table gauche)
    Bonjour;

    Voici la structure basique tbl_1
    idnum / nom
    100 Paul
    101 Jean
    102 Jules
    103 Yves

    Les enregistrements de tbl_2 sont alimentés sur la base des identifiants de tbl_1

    Fk_idnum / Anomalie
    101 AA
    101 BB
    102 AA

    J'attends le résultat suivant :

    100 Paul null
    101 Jean AA
    101 Jean BB
    102 Jules AA
    103 Yves null

    Voici la requête que j'ai testé / Mais elle ne renvoie pas les lignes de la table 1 qui n'ont pas d'enregistrement dans la table 2 ... Est-ce à cause de la clé étrangère ? Comment résoudre le problème ?
    Merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT
    1.idnum
    1.nom
    2.FK_idnum
    2.anomalie
    2.solution
    FROM tbl_1 AS 1
    LEFT OUTER JOIN tbl_2 as 2
    ON (1.idnum = 2.FK_idnum)

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour

    Est-ce réellement la requete que vous avez exécutée ? telle quelle ? J'en doute fort car la syntaxe est incorrecte...

    Mettez la vrai requête... (celle qui contient très probablement une clause WHERE portant sur une colonne de tbl_2, annulant de fait la jointure externe)

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Chef de projet MOA
    Inscrit en
    Décembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Décembre 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Bonjour;

    En effet, ma requête réelle est un peu plus complexe.
    En effet, la clause WHERE recherche les enregistrements qui correspondent à certains critères dans la table 2.
    Mais comment faire ?

    Merci

    Voici ce que ça donne
    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
     
    SELECT 
    wo.CODE_WORKORDER AS codebt,
    wo.CREATIONDATE as datedebut,
    wo.REALENDDATE as datefin,
    wo.FK_CODE_SITE, 
    wo.FK_CODE_ORGANISATION,
    trouble.CAUSE anomalie
     
    FROM
    tbl_workorder wo
    LEFT OUTER JOIN tbl_workordertroubleshooting trouble
    ON (wo.CODE_WORKORDER = trouble.FK_CODE_WORKORDER)
     
    WHERE
    wo.CREATIONDATE between $P{DATEDEBUT} and $P{DATEFIN}
    AND wo.FK_CODE_SITE = $P{SITE} 
    AND wo.FK_CODE_ORGANISATION = $P{ORG} 
    AND wo.FK_CODE_SITE = trouble.FK_CODE_SITE 
    AND wo.FK_CODE_ORGANISATION = trouble.FK_CODE_ORGANISATION

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par FUNSOCKS Voir le message
    En effet, la clause WHERE recherche les enregistrements qui correspondent à certains critères dans la table 2.
    Mais comment faire ?
    Il suffit de déplacer critères dans la condition de jointure.

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Chef de projet MOA
    Inscrit en
    Décembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Décembre 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Eh oui,

    Je mets les conditions dans la jointure .... n'est-ce pas ?
    Qu'en pensez vous ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    FROM
    tbl_workorder wo
    LEFT OUTER JOIN tbl_workordertroubleshooting trouble
    ON (wo.CODE_WORKORDER = trouble.FK_CODE_WORKORDER 
    AND wo.FK_CODE_SITE = trouble.FK_CODE_SITE 
    AND wo.FK_CODE_ORGANISATION = trouble.FK_CODE_ORGANISATION)
     
    WHERE
    AND wo.CREATIONDATE between $P{DATEDEBUT} and $P{DATEFIN}
    AND wo.FK_CODE_SITE = $P{SITE} 
    AND wo.FK_CODE_ORGANISATION = $P{ORG}

  6. #6
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    oui, c'est quelque chose comme ça. Si ce n'est qu'il reste un AND en trop...

    Par curiosité, quelle est la clef de la table workorder ?

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Chef de projet MOA
    Inscrit en
    Décembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Décembre 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Oui, merci.

    La clé : ben c'est bien le numéro du workorder+le site + Organisation (car numéro est non unique)....

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

Discussions similaires

  1. LEFT OUTER JOIN avec trois tables
    Par Space Cowboy dans le forum Requêtes
    Réponses: 8
    Dernier message: 19/08/2008, 14h51
  2. [VBA Access] supprimer les enregistrements/remplir table/dll
    Par genirette dans le forum VBA Access
    Réponses: 1
    Dernier message: 25/01/2008, 09h23
  3. requete qui Supprime les enregistrement d'une table
    Par mqsi dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 24/10/2007, 12h04
  4. Réponses: 2
    Dernier message: 26/04/2007, 16h32
  5. Supprimer les enregistrements d'une table !
    Par obon dans le forum Bases de données
    Réponses: 7
    Dernier message: 05/05/2006, 11h15

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