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 et SQL. Discussion :

Sélection des lignes dont les valeurs du champ ID sont communes à 3 tables sur 4 [AC-2010]


Sujet :

Requêtes et SQL.

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    981
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 981
    Points : 1 028
    Points
    1 028
    Billets dans le blog
    36
    Par défaut Sélection des lignes dont les valeurs du champ ID sont communes à 3 tables sur 4
    Bonjour à tous,

    J’ai 4 tables
    • Tbl1
    • Tbl2
    • Tbl3
    • Tbl4


    Ayant toutes le champ ID

    Je veux tous les enregistrements des tables Tbl1, Tbl2 et Tbl3 qui ont en commun une valeur du champ ID et absente de Tbl4.

    Je pensais faire un
    • LEFT JOIN sur les 4 tables avec Tbl4 en bout de chaîne
    • Sélectionner les enregistrements de tbl1.id not null et tbl2.id not null et tbl3.id not null et tbl4.id is null


    Un avis sur la solution

    Merci par avance pour toute aide
    Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
    Poésie 44, n° 17 - Albert Camus

    Mes réponses vous ont aidés, un clic sur leur pouce vert
    Bonjour chez vous

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 087
    Points : 5 203
    Points
    5 203
    Par défaut
    Bonjour,

    Avec cette solution les données des 3 tables seront en colonne (une ligne par id).
    Par contre il faut faire un inner join sur les 3 1eres et un left join uniquement sur la 4e sinon on aura des données présentes dans la 1e uniquement
    une variante est d'utiliser where not exists pour la 4e
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    981
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 981
    Points : 1 028
    Points
    1 028
    Billets dans le blog
    36
    Par défaut
    Bonjour nico84 et merci pour ton retour

    Si je te suis, tu proposes
    • Inner join sur les 3 1ères
    • Left join sur la 4ème + Is null sur ID


    C’était une solution que j’avais également en tête et vais la tester comme première solution !

    Citation Envoyé par nico84 Voir le message
    Bonjour,
    Avec cette solution les données des 3 tables seront en colonne (une ligne par id)...
    C’est l’objectif car je dois prendre pour les lignes qui respectent cette condition, le champ associe DESCRIPTION de tbl3.

    Citation Envoyé par nico84 Voir le message
    Bonjour,
    ...Par contre il faut faire un inner join sur les 3 1eres et un left join uniquement sur la 4e sinon on aura des données présentes dans la 1e uniquement...
    Pourrais tu m’expliquer pourquoi?
    Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
    Poésie 44, n° 17 - Albert Camus

    Mes réponses vous ont aidés, un clic sur leur pouce vert
    Bonjour chez vous

  4. #4
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 087
    Points : 5 203
    Points
    5 203
    Par défaut
    Citation Envoyé par informer Voir le message
    Pourrais tu m’expliquer pourquoi?
    t1 left join t2 on t1.id=t2.id ne garantit pas que id est dans t2, c'est le principe du left join
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    981
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 981
    Points : 1 028
    Points
    1 028
    Billets dans le blog
    36
    Par défaut
    Citation Envoyé par nico84 Voir le message
    t1 left join t2 on t1.id=t2.id ne garantit pas que id est dans t2, c'est le principe du left join
    D’où le critère is not null sur iD sur Tbl2 et Tbl3
    Et is null sur ID de Tbl4
    Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
    Poésie 44, n° 17 - Albert Camus

    Mes réponses vous ont aidés, un clic sur leur pouce vert
    Bonjour chez vous

  6. #6
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 087
    Points : 5 203
    Points
    5 203
    Par défaut
    Effectivement c'est original mais left + test not null = inner
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    981
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 981
    Points : 1 028
    Points
    1 028
    Billets dans le blog
    36
    Par défaut
    Nico84 tu as tout à fait raison alors faisons simple et prenons ta solution.

    Encore merci
    Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
    Poésie 44, n° 17 - Albert Camus

    Mes réponses vous ont aidés, un clic sur leur pouce vert
    Bonjour chez vous

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

Discussions similaires

  1. [LibreOffice][Tableur] Aligner des lignes dont les cellules sont identiques
    Par IED factory dans le forum OpenOffice & LibreOffice
    Réponses: 21
    Dernier message: 18/04/2018, 16h14
  2. Réponses: 5
    Dernier message: 17/08/2017, 16h50
  3. [MySQL] Sélection des lignes dont les associations sont dans une certaines liste
    Par collect dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 15/01/2015, 22h09
  4. Réponses: 4
    Dernier message: 21/07/2011, 15h25
  5. Réponses: 3
    Dernier message: 25/12/2009, 09h29

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