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

SQL Oracle Discussion :

SELECT distinct à partir de deux tables


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 20
    Par défaut SELECT distinct à partir de deux tables
    Bonjour à tous,
    alors voilà j'ai un petit sioucis que je n'arrive pas a résoudre, j'espère donc que les experts que vous êtes auront une minute ou deux à me consacrer...
    Voilà le soucis,
    j'ai 2 tables, A et B.
    A: col1a col2a
    B: col1b col2b

    Dans col1a j'ai des numéros, qui ne sont pas uniques.
    Dans col2a j'ai un chiffre qui à sont semblable dans la col1b.
    Dans col2b j'ai une description.

    J'ai besoin de récupérer col1a, col1b et col2b...
    J'arrive a récupérer avec un distinct col1b et col2b, mais quand je veux récupérer col1a, il me duplique toutes mes lignes, une fois sans col1a, une fois avec...

    Voici la requête qui fonctionne, sans récupération de col1a:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT distinct b.col1b, b.col2b
    FROM B b, A a
    WHERE a.col1a = '12' AND a.col2a = b.col1b
    Voici la requête qui me duplique mes lignes, et donc celle a corriger:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT distinct b.col1b, b.col2b, a.col1a
    FROM B b, A a
    WHERE a.col1a = '12' AND a.col2a = b.col1b
    J'espère que c'est clair, c'est pas évident à expliquer et à généraliser...
    Merci d'avance aux cerveaux qui me donneront un peu de leur temps!

    Jérôme

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    J'espère que c'est clair, c'est pas évident à expliquer et à généraliser...
    Moyennement...
    Au lieu de généraliser, donne ton cas concret, c'est toujours plus facile à comprendre.

    DISTINCT opère sur toutes les colonnes du SELECT. Comme le valeurs de col1a ne sont pas uniques, c'est normal que tu aies plusieurs fois col1b et col2b.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 20
    Par défaut
    Désolé pour la clarté alors...
    Voilà ce que ma requête est censée faire:

    Table A:
    Col1a: un numéro, plusieurs lignes ont le même
    Col2a: un numéro, plusieurs lignes ont le même
    Col3a: une unité de mesure

    Table B:
    Col1b: un numéro, unique, qui fait le lien avec la table A (col1a)
    Col2b: une description

    Résultat voulu:
    Pour chaque col2a qui contient un numéro, je voudrais récupérer ce numéro (dans A ou B), la description dans B, et l'unité qui est dans A...
    Je voudrais cependant que mes résultats soient uniques, car il y a des lignes dans A qui ont les mêmes Col1a et Col2a.

    Voilà pour la deuxième tentative...
    Merci d'avance!

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Déjà que ce n'était pas clair, maintenant, j'ai l'impression que c'est incohérent !
    Col1b: un numéro, unique, qui fait le lien avec la table A (col1a)

    Pour chaque col2a qui contient un numéro, je voudrais récupérer ce numéro (dans A ou B)


    Quel est le vrai nom des tables et des colonnes ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 20
    Par défaut
    C'est bien col1 a désolé...

    Pour les vrais noms de colonnes:

    Table A pidata:
    Col1a: mancode :un numéro, plusieurs lignes ont le même
    Col2a: metadataset :un numéro, plusieurs lignes ont le même
    Col3a: unit :une unité de mesure

    Table B metadatavalue:
    Col1b: name: un numéro, unique, qui fait le lien avec la table A (col1a)
    Col2b: description :une description


    Encore merci...

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    En réalité, si je comprends bien, c'est pidata.mancode qui est une clé étrangère référençant metadatavalue.name ?

    Est-ce que, à chaque pidata.mancode ne correspond qu'une seule pidata.unit ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    En réalité, si je comprends bien, c'est pidata.mancode qui est une clé étrangère référençant metadatavalue.name ?

    Est-ce que, à chaque pidata.mancode ne correspond qu'une seule pidata.unit ?

    Maintenant qu'on a les vrais noms, tu peux nous dire plus concrètement ce que tu veux récupérer comme résultat ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

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

Discussions similaires

  1. Requete select distinct mail dans deux tables
    Par calitom dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/06/2008, 15h07
  2. Créer une table a partir de deux tables existantes
    Par Aguiran dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 07/12/2006, 08h16
  3. [c#]commande Select avec jointure de deux tables
    Par chorokari dans le forum Accès aux données
    Réponses: 6
    Dernier message: 18/10/2006, 14h47
  4. Requete Delete à partir de deux tables
    Par Le_Phasme dans le forum Access
    Réponses: 2
    Dernier message: 09/10/2006, 10h22
  5. [SELECT] sélection croisée entre deux tables
    Par WriteLN dans le forum Langage SQL
    Réponses: 4
    Dernier message: 22/03/2005, 11h05

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