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 :

Recherche d'éléments non présents en base


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 55
    Par défaut Recherche d'éléments non présents en base
    Bonjour,
    Est il possible de lister les éléments non présents en base par rapport à une liste.

    Exemple :
    En base, dans la table ELEMENT, j'ai 1,2,3
    En liste, j'ai 1,2,3,4 , j'aimerai une requete qui me retourne le 4.

    Est il possible d'avoir ça ?

    Merci de vos réponses.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    Etant donné que la base n'a pas les éléments de la liste, elle ne pourra pas vous sortir des données qu'elle n'a pas.

    Par contre votre application, pour chacune des valeurs de la liste, peut demander à la base si elle a l'élément. Dans le cas où la base ne trouve pas l'élément, votre application doit garder les valeurs non trouvées.

  3. #3
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 292
    Par défaut
    La solution classique à ce problème consiste à ajouter les tables de références manquantes, et à faire ensuite une requête de non-correspondance :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE Liste (Num INTEGER PRIMARY KEY) ;
    INSERT INTO Liste (Num) VALUES (1) ;
    ...
    INSERT INTO Liste (Num) VALUES (4) ;
     
    SELECT Num
    FROM Liste L
      LEFT OUTER JOIN ELEMENT E ON L.Num = E.ID
    WHERE E.ID IS NULL ;
    Si tu n'as pas la possibilité d'ajouter une table, tu peux la simuler avec une union :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT 1 
    UNION ALL
    SELECT 2
    UNION ALL
    SELECT 3
    UNION ALL
    SELECT 4
    (ajouter le FROM DUAL pour Oracle)

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 55
    Par défaut
    Merci Antoun, c'est exactement ce que je voulais, sans créer de table.

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

Discussions similaires

  1. recherche de valeur non présentes dans une autre table
    Par omelhor dans le forum Requêtes
    Réponses: 2
    Dernier message: 16/02/2015, 10h51
  2. Recherche de terme non présent dans une autre base
    Par omelhor dans le forum Requêtes
    Réponses: 2
    Dernier message: 25/07/2014, 11h30
  3. Récupération d'une donnée non présente en base
    Par djanggawul dans le forum SQL
    Réponses: 8
    Dernier message: 24/01/2011, 15h29
  4. Réponses: 5
    Dernier message: 19/02/2009, 17h00
  5. Réponses: 2
    Dernier message: 04/05/2007, 10h55

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