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

Langage SQL Discussion :

Optimisation d'une jointure entre 3 tables


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 57
    Points : 50
    Points
    50
    Par défaut Optimisation d'une jointure entre 3 tables
    Bonjour à tous,

    J'ai besoin de conseil d'expert concernant une jointure entre 3 tables.

    Voici mon probleme: j'ai trois tables A, B et C qui représentent des articles. Elles font partie d'un ERP, je n'ai pas la main dessus
    Dans chacune des table, 2 champs commun: ID et LIBELLE

    Une quatrième table, Fiche, comporte une clé externe ID_PRODUIT représentant un identifiant produit pouvant être dans A, B ou C....

    Les elements de A B et C sont non disjoints IE je peux avoir comme id dans A: 1, 2
    dans B: 2, 3 et dans C: 3, 4

    je cherche a faire une requete la plus optimisée possible -car ces tables sont volumineuses...- permettant de remonter de façon unique tous les produits (id et libelle): D : 1, 2, 3, 4

    La façon triviale de faire:

    select distinct ID, LIBELLE from
    (
    select ID, LIBELLE from A
    union
    select ID, LIBELLE from B
    union
    select ID, LIBELLE from C
    )

    Merci à tous!!!

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    le DISTINCT est inutile, UNION supprime déjà les doublons.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  3. #3
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 57
    Points : 50
    Points
    50
    Par défaut
    oui c'est vrai..
    par contre je me suis rendu compte que j'ai dee libellés différents pour des meme produits!

    table A:
    ID : 1, LIBELLE: LIB1

    table B:
    ID : 1, LIBELLE: LIB2

    COmment "sauter" ces doublons??

  4. #4
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut Re: Optimisation d'une jointure entre 3 tables
    En choisissant, par exemple le plus grand libellé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select ID, MAX(LIBELLE) 
    from (select ID, LIBELLE from A
         union
          select ID, LIBELLE from B
         union
          select ID, LIBELLE from C
         )
    group by Id
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  5. #5
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 57
    Points : 50
    Points
    50
    Par défaut
    Merci !! j'ai fais ça pour supprimer des doublons
    j'ai rajouté des index également sur les 2 colonnes pour chaque table pour gagner en perf.

    Merci a toi.

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

Discussions similaires

  1. Réponses: 16
    Dernier message: 20/05/2015, 13h36
  2. [Débutant] Organiser son code pour une jointure entre 2 tables
    Par scude dans le forum ASP.NET MVC
    Réponses: 4
    Dernier message: 02/05/2012, 11h59
  3. Réponses: 3
    Dernier message: 01/04/2010, 10h04
  4. Réponses: 1
    Dernier message: 06/04/2009, 11h38
  5. [MySQL] Faire une jointure entre deux tables qui ne sont pas dans la même base de données
    Par sandddy dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 03/04/2008, 14h18

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