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 :

Selection de Duplicata


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Par défaut Selection de Duplicata
    Bonjour à tous,
    j'ai un petit blocage aujourd'hui. J'ai dans une BD une table qui stock des données d'analyses originales ainsi que des données de ré-analyse du même échantillons.
    Il existe un champ (sample_type) qui me mentionne de quelle nature est l'échantillon (Original ou Duplicata) ainsi q'un champ (parent_sample_number) qui m'indique quelle est l'échantillon original dans le cas d'un duplicata. Je veux donc faire une selection de tout les duplicata ainsi que de leur original. Ce n'est pas tout a fait des doublons car les données lors de la réanalyse peuvent changer!
    Quelqun peut m'aider?
    voici un exemple de mes données:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    num	ID     type  parentID  col    result
    
    999	10	ORIG	10	ICP	11
    999	11	DUP	10	ICP	12
    888	12	ORIG	12	ICP	37
    888	13	DUP	12	ICP	39
    889	14	ORIG	14	ICP	65
    890	15	ORIG	15	ICP	73
    891	16	ORIG	16	ICP	13
    892	17	ORIG	17	ICP	19
    893	18	ORIG	18	ICP	18
    894	19	ORIG	19	ICP	31
    J'aimerais que ma requête sélectionne seulement les ID 10, 11, 12, 13

    Merci d'avance!!!

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT *
      FROM MaTable
     WHERE Type = 'DUP'
        OR Id IN (SELECT parentID FROM MaTable
                  WHERE Type = 'DUP')

  3. #3
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    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 818
    Billets dans le blog
    14
    Par défaut
    S'il n'y a qu'un duplicata par échantillon, une simple auto-joiture sera suffisante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT a.num AS num_Duplicata, 
      a.ID AS ID_Duplicata, 
      a.col AS col_Duplicata,
      a.result AS result_Duplicata,
      a.ParentID AS ID_Original,
      b.num AS num_Original,
      b.col As col_Original,
      b.result AS result_Original
    FROM taTable AS a
    INNER JOIN taTable AS b ON a.ParentID = b.ID
    WHERE a.type = 'DUP'
    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 !

  4. #4
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Par défaut
    Merci à tous les deux, je suis sur la bonne voie...
    Cependant, dans le premier cas j'ai seulement les duplicata dans ma sélection et dans le deuxieme j'ai l'inverse, c'Est à dire que j'ai seulement les originaux qui possèdent un duplicata...Est-il possible d'avoir dans la sélection l'original ainsi que son duplicata?

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Vous avez du vous tromper je pense :

    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
    21
    22
    23
    24
    25
    WITH MaTable (num, id, typ, parentid, col, result)
    AS
    (
    select 999, 10, 'ORIG', 10, 'ICP', 11 union all
    select 999, 11, 'DUP' , 10, 'ICP', 12 union all
    select 888, 12, 'ORIG', 12, 'ICP', 37 union all
    select 888, 13, 'DUP' , 12, 'ICP', 39 union all
    select 889, 14, 'ORIG', 14, 'ICP', 65 union all
    select 890, 15, 'ORIG', 15, 'ICP', 73 union all
    select 891, 16, 'ORIG', 16, 'ICP', 13 union all
    select 892, 17, 'ORIG', 17, 'ICP', 19 union all
    select 893, 18, 'ORIG', 18, 'ICP', 18 union all
    select 894, 19, 'ORIG', 19, 'ICP', 31
    )
    select * from MaTable
     where typ = 'DUP'
        or id in (select parentid from MaTable
                  where typ = 'DUP');
     
    num         id          typ  parentid    col  result
    ----------- ----------- ---- ----------- ---- -----------
    999         10          ORIG 10          ICP  11
    999         11          DUP  10          ICP  12
    888         12          ORIG 12          ICP  37
    888         13          DUP  12          ICP  39

  6. #6
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Par défaut
    Effectivement, j'ai du faire une petite erreur a quelque part....J'ai finalement le résultat voulu!!!

    Merci beaucoup!

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

Discussions similaires

  1. Multi-selection dans une ComboBox ?
    Par Moloko dans le forum MFC
    Réponses: 5
    Dernier message: 07/07/2021, 17h26
  2. [VB6] [Crystal] Selection enregistrement
    Par littlecow dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 11/01/2005, 13h08
  3. SELECT
    Par Thomad dans le forum SQL
    Réponses: 2
    Dernier message: 13/03/2003, 20h56
  4. TEdit : selection du texte et autre fonction
    Par Odulo dans le forum Composants VCL
    Réponses: 5
    Dernier message: 01/08/2002, 14h27
  5. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44

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