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 :

Recherche d'enregistrements sur base d'une liste


Sujet :

SQL Oracle

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2002
    Messages : 35
    Points : 38
    Points
    38
    Par défaut Recherche d'enregistrements sur base d'une liste
    Hello à toutes et tous !
    J'ai un ch'ti problème :
    - j'ai une table de factures avec un N° de factur unique
    - J'ai dans un fichier plat, une liste de N° de factures (+- 100)
    Je dois trouver les ou les N° de facture de ma liste qui NE SONT PAS dans la table.
    J'ai éssayé avec un SELECT ... WHERE Num_Facture IN ( 101,212,345,444,.....) mais dans ce cas je trouve tout ce qui est commun à ma liste et à la table.

    Il faudrait probalement trouver le moyen de transformer ma liste de N° en sub-select mais je ne vois pas comment...

    Quelqu'un a-t-il une piste ?

    Merci d'avance,

    Michel

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Tu insères ta liste dans une table temporaire, puis tu fais un select de ta table temporaire where not exists de ta table facture.

  3. #3
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Bonjour,

    Voilà comment je procèderais (si tu es en 9i ou >) :
    - création d'une table externe FACT_FIC à partir de votre fichier
    - puis avec la requête suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select *
    from fact_fic
    where not exists (select null from factures where fact_fic.num_facture = factures.num_facture);
    NB : merci à l'avenir de préciser votre version d'oracle

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2002
    Messages : 35
    Points : 38
    Points
    38
    Par défaut
    Oups !
    Version 9i

    merci pour vos bons conseils mais...
    Petite contrainte supplémentaire :-(
    Je ne suis pas admin de la DB (db de production) et n'ai donc pas les droits pour créer une table temporaire...

    La solution au niveau du SQL peut être alambiquée dans la mesure ou c'est (normalement) un one shot ! Ce n'est pas une fonctionnalité qui doit être implémentée de façon durable dans une application.

    Merci encore pour vos aides,

    Michel

  5. #5
    Membre averti Avatar de Wurlitzer
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 469
    Points : 408
    Points
    408
    Par défaut
    A mon avis tu ne peux pas faire ca directement en SQL si tu ne peux pas charger (ou table externe) ton fichier.

    Il faut que tu fasse ca avec un code procédurale (PL/SQL, shell ou tout ce que tu veux) et tu fais une boucle sur chaque engeristrement de ton fichier et tu test par un select si il existe ou non

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

Discussions similaires

  1. [XL-2007] Realiser un graphique sur la base d'une liste déroulante
    Par TRESOALEX dans le forum Excel
    Réponses: 5
    Dernier message: 05/10/2012, 23h43
  2. Réponses: 4
    Dernier message: 17/04/2011, 12h08
  3. Réponses: 3
    Dernier message: 13/09/2009, 03h40
  4. Réponses: 6
    Dernier message: 24/11/2008, 14h01
  5. Créer une liste d'option sur base d'une db
    Par HwRZxLc4 dans le forum Langage
    Réponses: 10
    Dernier message: 24/04/2008, 15h26

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