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 :

exprimer des sous requêtes


Sujet :

SQL Oracle

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Points : 167
    Points
    167
    Par défaut exprimer des sous requêtes
    Bonjour,

    je travaille sous Oracle 9i

    Voici la structure de mes deux tables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    VueSejourDPI(ID (NuméroAuto),PAT_ExternalId (Texte),Date_Examen (date/heure),NISEJOUR (Texte))
    
    Visite(VISTE_Id (NuméroAuto),PAT_ExternelId (Texte),DPI_NISEJOUR (Texte),Jaeger_VISITE_Id (Texte),DATEVISITE (date/heure))
    je souhaite inserer dans la table Visite les données de la table VueSejourDPI qui n'existent pas déjà dans la table Visite. sachant que le champ Jaeger_VISITE_Id restera vide.
    c'est à dire je veux selectionner toutes les visites de la base VueSejourDPI pour lequelle soit les PAT_ExternelId n'existe pas dans la table visite ou bien il existe mais les dates DATEVISITE et Date_Examen sont differents.

    je n'ai pas réussi à formuler ma requête et c'est pour cette raison je demande votre aide.

    je vous remercie d'avance.

  2. #2
    Rédacteur
    Avatar de Bruno2r
    Homme Profil pro
    Exploitation des données
    Inscrit en
    Décembre 2006
    Messages
    2 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Exploitation des données
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 566
    Points : 4 780
    Points
    4 780
    Par défaut
    Bonjour,
    Je pense que je m'y prendrais de la façon suivante
    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
    INSERT INTO Visite (
    PAT_ExternelId ,
    DPI_NISEJOUR,
    Jaeger_VISITE_Id,
    DATEVISITE
    )
    SELECT 
    A.PAT_ExternalId,
    A.NISEJOUR,
    NULL,
    A.Date_Examen
    FROM VueSejourDPI A
    WHERE NOT EXISTS (SELECT 'X'
    			FROM Visite B
    			WHERE A.PAT_ExternalId = B.PAT_ExternalId)
    UNION
    SELECT 
    A.PAT_ExternalId,
    A.NISEJOUR,
    NULL,
    A.Date_Examen
    FROM Visite B, VueSejourDPI A
    WHERE  A.PAT_ExternalId = B.PAT_ExternalId
    AND A.ate_Examen <> B.DATEVISITE
    On pourrait aussi remplacer l'UNION des deux SELECT par une seconde clause WHERE
    CLAUSE 1
    OR CLAUSE 2
    mais en terme d'optimisation le recours à UNION est souvent rentable.

    J'espère que cela t'aidera
    Précisez la VERSION !
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton
    Tutoriels BO et FAQ BO
    "A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Points : 167
    Points
    167
    Par défaut
    Merci beaucoup pour ton aide, effectivement c'est ce que j'ai fais
    Comme je dois inserer mes données Oracle dans une pseudo base Access, j'ai mis ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    INSERT INTO Visite ( PAT_ExternelId, DATEVISITE, DPI_NISEJOUR )
    SELECT DISTINCT VueSejourDPI.PAT_ExternalId, VueSejourDPI.Date_Examen, 
    VueSejourDPI.NISEJOUR
    FROM VueSejourDPI, Visite
    WHERE (((Exists (select 1 from Visite v1 where v1.PAT_ExternelId = VueSejourDPI.PAT_ExternalId))=False)) 
    OR (((Exists (select 1 from Visite v1 where v1.PAT_ExternelId = VueSejourDPI.PAT_ExternalId and dateDiff("d",v1.DateVisite,VueSejourDPI.Date_Examen) = 0))=False));
    et ça marche.
    merci encore

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

Discussions similaires

  1. Probleme de tri avec des sous requêtes
    Par kamnouz dans le forum Requêtes
    Réponses: 1
    Dernier message: 20/04/2010, 10h03
  2. A propos des sous-requêtes
    Par vincent-v dans le forum Langage SQL
    Réponses: 8
    Dernier message: 20/08/2009, 18h40
  3. [AC-2003] Création d'index dans des sous-requêtes
    Par buzz73 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 06/08/2009, 14h33
  4. Afficher des sous-requêtes dans une requête
    Par ZashOne dans le forum Sql*Plus
    Réponses: 6
    Dernier message: 16/04/2008, 10h07
  5. Problème avec des sous requêtes
    Par nicocolt dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/10/2007, 15h19

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