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 :

SELECT dans un SELECT


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    661
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 661
    Par défaut SELECT dans un SELECT
    Bonjour,

    J'ai deux vues(a et b) concernant des personnes, je voudrais afficher les personnes de la vue a qui ne sont pas dans la vue b.

    Comment puis je faire ???

    Les champs en communs sont nom, prénom, n°nat

    D'avance merci

  2. #2
    Membre extrêmement actif
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Billets dans le blog
    6
    Par défaut
    sous Oracle, tu peux utiliser MINUS
    sous les autres tu trouves NOT EXISTS IN

    En classique,tu mets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select A.nom, A.prénom, A.n°nat
    from vue_A A left join vue_B B on A.n_nat=B.n_nat
    where B.n_nat is null

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    661
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 661
    Par défaut
    Ok merci de ton aide mais avec cette requête il me manque des enregistrements:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT a.NOM,a.PRENOM,a.NUMPAT
    FROM V_CHHF_LIST_DICT_DATE a LEFT JOIN V_CHHF_MED_NUC B ON a.NUMPAT=b.NUMPAT
    WHERE b.NUMPAT IS NULL
    AND B.numpat=459856
    L'enregistrement dont le numpat est 459856 qui est connu des deux vues ne retrouve pas dans mon résultat.

  4. #4
    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
    Ben c'est la jointure inverse !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT B.nom, B.prénom, B.n°nat
    FROM vue_B B
    LEFT JOIN vue_A A ON A.n_nat=B.n_nat
    WHERE A.n_nat IS NULL
    Tu peux aussi utiliser NOT EXISTS qui peut être plus efficace si le volume de données est important :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT B.nom, B.prénom, B.n°nat
    FROM vue_B B
    WHERE NOT EXISTS (
    	SELECT *
    	FROM vue_A A
    	WHERE A.n_nat=B.n_nat
    )
    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 extrêmement actif
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par jacko842 Voir le message
    Bonjour,

    J'ai deux vues(a et b) concernant des personnes, je voudrais afficher les personnes de la vue a qui ne sont pas dans la vue b.
    CinePhil

    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
    with vue_A as
    (SELECT 'AAA' nom, 'A' prénom, 1 n_nat from dual union
    SELECT 'BBB' nom, 'B' prénom, 2 n_nat from dual union
    SELECT 'CCC' , 'C' , 3  from dual union
    SELECT 'DDD' , 'D' , 4  from dual union
    SELECT 'EEE' , 'E' , 5  from dual union
    SELECT 'FFF' , 'F' , 6 nat from dual union
    SELECT 'GGG' , 'G' om, 7  from dual ),
    vue_B as
    (SELECT 'AAA' nom, 'A' prénom, 1 n_nat from dual union
    SELECT 'DDD' , 'D' , 4  from dual union
    SELECT 'EEE' , 'E' , 5  from dual union
    SELECT 'GGG' , 'G' , 7  from dual )
     
     
    SELECT A.nom, A.prénom, A.n_nat
    FROM vue_A A LEFT JOIN vue_B B ON A.n_nat=B.n_nat
    WHERE B.n_nat IS NULL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
       	NOM	PRÉNOM	N_NAT
    1	CCC	C	3
    2	BBB	B	2
    3	FFF	F	6

  6. #6
    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
    Euh... il n'y aurait pas eu un ou des messages supprimés ?

    Vu ma réponse, si je me souviens bien, il a demandé ensuite ceux de B qui ne sont pas dans A.
    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
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    661
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 661
    Par défaut
    Merci pour votre aide, ça fonctionne

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

Discussions similaires

  1. Selection d'une selection dans un filtre
    Par Swiper dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/07/2007, 19h26
  2. changement de formulaire sur selection dans le select
    Par LeXo dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 15/06/2006, 11h51
  3. select dans un select
    Par Terminator dans le forum Langage SQL
    Réponses: 7
    Dernier message: 20/10/2005, 18h23
  4. [firebird] sous select dans un select
    Par gdido dans le forum SQL
    Réponses: 2
    Dernier message: 14/05/2004, 09h57
  5. [Sybase] Select dans une select loop en C
    Par Claudio dans le forum Sybase
    Réponses: 2
    Dernier message: 29/04/2003, 18h06

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