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 :

Trouver les éléments absents parmi une liste


Sujet :

SQL Oracle

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2011
    Messages : 40
    Points : 34
    Points
    34
    Par défaut Trouver les éléments absents parmi une liste
    Bonjour,
    j'ai les 3 tables suivantes:
    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
    26
    27
    CREATE TABLE T1 (ID1 VARCHAR2(01) ,CONSTRAINT PK_T1 PRIMARY KEY (ID1));
    INSERT INTO T1 (ID1) VALUES ('1');
    INSERT INTO T1 (ID1) VALUES ('2');
    INSERT INTO T1 (ID1) VALUES ('3');
    INSERT INTO T1 (ID1) VALUES ('4');
    INSERT INTO T1 (ID1) VALUES ('5');
     
    CREATE TABLE T2 (ID2 VARCHAR2(01) ,CONSTRAINT PK_T2 PRIMARY KEY (ID2));
    INSERT INTO T2 (ID2) VALUES ('A');
    INSERT INTO T2 (ID2) VALUES ('B');
    INSERT INTO T2 (ID2) VALUES ('C');
    INSERT INTO T2 (ID2) VALUES ('D');
    INSERT INTO T2 (ID2) VALUES ('E');
     
    CREATE TABLE T3 (ID1 VARCHAR2(1) ,ID2 VARCHAR2(1) ,ID3 VARCHAR2(1) ,CONSTRAINT PK_T3 PRIMARY KEY (ID1,ID2,ID3), CONSTRAINT FK_T3_1 FOREIGN KEY (ID1) REFERENCES T1(ID1), CONSTRAINT FK_T3_2 FOREIGN KEY (ID2) REFERENCES T2(ID2));
    INSERT INTO T3 (ID1, ID2, ID3) VALUES ('1', 'A', '1');
    INSERT INTO T3 (ID1, ID2, ID3) VALUES ('1', 'A', '2');
    INSERT INTO T3 (ID1, ID2, ID3) VALUES ('1', 'C', '1');
    INSERT INTO T3 (ID1, ID2, ID3) VALUES ('2', 'A', '1');
    INSERT INTO T3 (ID1, ID2, ID3) VALUES ('2', 'B', '1');
    INSERT INTO T3 (ID1, ID2, ID3) VALUES ('2', 'C', '1');
    INSERT INTO T3 (ID1, ID2, ID3) VALUES ('3', 'A', '1');
    INSERT INTO T3 (ID1, ID2, ID3) VALUES ('3', 'B', '1');
    INSERT INTO T3 (ID1, ID2, ID3) VALUES ('3', 'B', '2');
    INSERT INTO T3 (ID1, ID2, ID3) VALUES ('3', 'C', '1');
    INSERT INTO T3 (ID1, ID2, ID3) VALUES ('3', 'D', '1');
    INSERT INTO T3 (ID1, ID2, ID3) VALUES ('5', 'D', '1');
    Quel le moyen le plus performant de trouver la liste des T3.ID1 dont au-moins un T3.ID2 est absent de la liste ('A','B','C')?
    Résutat:
    Ma solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT DISTINCT ID1
    FROM (
      SELECT T1.ID1,T2.ID2 
      FROM T1
      CROSS JOIN T2
      WHERE ID2 IN ('A','B','C')
    )
    WHERE (ID1,ID2) NOT IN (SELECT ID1,ID2 FROM T3)

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    A lire, la division relationnelle et une solution spécifique oracle

    Par exemple :
    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
    SQL> select t1.id1
      2    from t1
      3    left join t3
      4      on t3.id1 = t1.id1
      5     and t3.id2 in ('A','B','C')
      6   group by t1.id1
      7  having count(distinct t3.id2) < 3;
     
    I
    -
    1
    5
    4
     
    SQL>

Discussions similaires

  1. Réponses: 8
    Dernier message: 16/06/2014, 16h12
  2. Trouver les éléments identiques dans deux listes
    Par ricololo dans le forum MATLAB
    Réponses: 4
    Dernier message: 29/01/2009, 13h25
  3. Trouver les éléments unique d'une liste
    Par Loki83 dans le forum Excel
    Réponses: 4
    Dernier message: 27/11/2008, 15h28
  4. Obtenir les éléments uniques d'une liste
    Par Loki83 dans le forum Excel
    Réponses: 3
    Dernier message: 14/11/2008, 11h50
  5. Réponses: 10
    Dernier message: 15/12/2006, 07h34

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