Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/08/2011, 11h14   #1
Invité de passage
 
Inscription : mai 2004
Messages : 9
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 9
Points : 3
Points : 3
Par défaut Requête imbriquée Oracle

Bonjour,

Voici mon problème, j'ai une table VARIABLES avec comme PK les colonnes NUMERODEP et VPRO_NUMERODEP. Cette table VARIABLES a un lien sur une table QUESTIONNAIRES (donc dans ma table QUESTIONNAIRES j'ai les FK VARI_NUMERODEP et VARI_VPRO_NUMERODEP de la table variables). Comment je peux savoir quelles variables n'existent pas dans la table questionnaires?

Si la PK était seulement une colonne exemple NUMERODEP, la requête est la suivante:
SELECT NUMERODEP
FROM VARIABLES
WHERE NUMERODEP NOT IN (SELECT VARI_NUMERODEP FROM QUESTIONNAIRES);

Mais avec 2 colonnes comme PK, quelle est la requête??
Merci d'avance
panel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2011, 11h24   #2
Membre Expert
 
Avatar de Yanika_bzh
 
Homme Yannick
Ingénieur Etudes & Developpements
Inscription : février 2006
Messages : 1 125
Détails du profil
Informations personnelles :
Nom : Homme Yannick
Localisation : France, Deux Sèvres (Poitou Charente)

Informations professionnelles :
Activité : Ingénieur Etudes & Developpements
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 1 125
Points : 1 670
Points : 1 670
Ceci devrait répondre a votre besoin

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT 
     A.NUMERODEP
FROM  
      VARIABLES A
WHERE
      NOT EXISTS (
                 SELECT 
                       1 
                  FROM 
                       QUESTIONNAIRES B
                 WHERE 
                        B.FK VARI_NUMERODEP = A.NUMERODEP AND
                        B.VARI_VPRO_NUMERODEP =A.VPRO_NUMERODEP)
Bon courage
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)
Yanika_bzh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2011, 11h25   #3
Rédacteur
 
Inscription : décembre 2002
Messages : 2 387
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 387
Points : 3 272
Points : 3 272
Pas de problème, le NOT IN peut être multivalué :
Code :
WHERE (a, b) NOT IN (SELECT c, d...)
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/08/2011, 11h36   #4
Invité de passage
 
Inscription : mai 2004
Messages : 9
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 9
Points : 3
Points : 3
Merci ça fonctionne
panel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2011, 11h52   #5
Membre expérimenté
 
Homme Mohamed Houri
Inscription : mars 2010
Messages : 286
Détails du profil
Informations personnelles :
Nom : Homme Mohamed Houri
Localisation : France

Informations forums :
Inscription : mars 2010
Messages : 286
Points : 563
Points : 563
Citation:
Envoyé par Pomalaix Voir le message
Pas de problème, le NOT IN peut être multivalué :
Code :
WHERE (a, b) NOT IN (SELECT c, d...)
Oui mais il faut toujours faire attention avec les NULLs et les NOT IN
Code :
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
 
mhouri.world >SELECT   d.deptno
  2         , d.dname
  3  FROM     dept d
  4  WHERE    NOT EXISTS
  5              ( SELECT NULL
  6                FROM   emp e
  7                WHERE  e.deptno = d.deptno
  8               )
  9    ;
 
    DEPTNO DNAME                                                                
---------- --------------                                                       
        40 OPERATIONS                                                           
 
mhouri.world >SELECT   d.deptno
  2         , d.dname
  3  FROM     dept d
  4  WHERE    d.deptno NOT IN
  5                   (SELECT e.deptno
  6                    FROM   emp e
  7                   )
  8  ;
 
    DEPTNO DNAME                                                                
---------- --------------                                                       
        40 OPERATIONS                                                           
 
mhouri.world >INSERT INTO emp VALUES (5,'Mohamed','sql', 7369,sysdate,100,0, NULL);
 
1 row created.
 
mhouri.world >SELECT   d.deptno
  2         , d.dname
  3  FROM     dept d
  4  WHERE    NOT EXISTS
  5              ( SELECT NULL
  6                FROM   emp e
  7                WHERE  e.deptno = d.deptno
  8               )
  9    ;
 
    DEPTNO DNAME                                                                
---------- --------------                                                       
        40 OPERATIONS                                                           
 
mhouri.world >SELECT   d.deptno
  2         , d.dname
  3  FROM     dept d
  4  WHERE    d.deptno NOT IN
  5                   (SELECT e.deptno
  6                    FROM   emp e
  7                   )
  8  ;
 
no rows selected
__________________
Bien Cordialement
www.hourim.wordpress.com
Mohamed.Houri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2011, 12h06   #6
Rédacteur
 
Inscription : décembre 2002
Messages : 2 387
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 387
Points : 3 272
Points : 3 272
Citation:
Envoyé par Mohamed.Houri Voir le message
Oui mais il faut toujours faire attention avec les NULLs et les NOT IN
Certes, mais cette problématique bien connue est indépendante du nombre de colonnes.
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h54.


 
 
 
 
Partenaires

Hébergement Web