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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau 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 : 34
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Décembre 2014
    Messages : 6
    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
    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
    Nouveau 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 : 34
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Décembre 2014
    Messages : 6
    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
    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
    Nouveau 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 : 34
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Décembre 2014
    Messages : 6
    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
    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
    Nouveau 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 : 34
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Décembre 2014
    Messages : 6
    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