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

Développement SQL Server Discussion :

except et liste


Sujet :

Développement SQL Server

  1. #1
    Membre confirmé
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Février 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Afghanistan

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Février 2007
    Messages : 103
    Par défaut except et liste
    Bonjour.

    Je veux trouver toutes les occurences d'une liste qui sont pas dans une table.
    Ma liste est sous la forme "toto","titi"...
    Ma table ne contient qu'une colonne "nom" :
    |tata|
    |toto|

    J'aimerais ecrire quelque chose comme :
    select * from matable except "toto","titi","tata"
    et qu'il me retourne "titi" (car titi est dans ma liste mais pas dans ma table).

    Quel est la syntaxe correcte pour écrire ça ?
    Merci d'avance.

  2. #2
    Membre Expert

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Par défaut
    Vous pouvez tenter ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from maTable where nom not in ('tata','toto')

  3. #3
    Membre confirmé
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Février 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Afghanistan

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Février 2007
    Messages : 103
    Par défaut
    Merci, mais je veux l'inverse.

    SELECT * FROM maTable WHERE nom NOT IN ('tata','toto')
    Va me retourner toutes les lignes de maTable qui ne sont pas dans la liste.
    Je veux les items de ma liste qui ne sont pas dans ma table.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Par défaut
    L'opérateur EXCEPT est apparu à partir de SQL Server 2005. Vous pouvez par exemple charger une table avec votre liste et faire un except sur maTable.

  5. #5
    Membre confirmé
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Février 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Afghanistan

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Février 2007
    Messages : 103
    Par défaut
    Oui, j'ai pensé à cette option.

    En ce cas, ma question serait comment peupler une table avec une liste ?

    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into matable values ('toto','titi',...);
    mais il me sort :
    Le nom ou le numéro de colonne des valeurs fournies ne correspond pas à la définition de la table.

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO matable VALUES ('toto');
    INSERT INTO matable VALUES ('titi');
    INSERT INTO matable VALUES ('tata');
    Quelle version de sql server utilisez-vous ?

  7. #7
    Membre confirmé
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Février 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Afghanistan

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Février 2007
    Messages : 103
    Par défaut
    2008; je cherchais à minimiser les transformations de texte.
    Si je met un input par valeur, je me demande si j'y gagne significativement en terme de requêtes.

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Par défaut
    Si vous êtes sous SQL 2008, vous pouvez utiliser la syntaxe suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO matable VALUES ('toto'), ('titi'), ('tata');
    je cherchais à minimiser les transformations de texte.
    Je ne comprends pas ...

    Important : expliquez précisement ce que vous voulez faire, dans votre contexte et vous pourrez avoir des réponses plus adéquates. D'où vient cette liste, combien d'éléments ? Est-ce qu'elle externe à la base ? etc.....

    merci

  9. #9
    Membre Expert

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Par défaut
    C'est vrai que c'est pas tres clair...

    Il y a aussi la solution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    With CTE_Maliste
    as 
    ( Select 'titi' as nom
    union
    select 'toto' as nom
    ...
    )
    select * from CTE_MaListe where nom not in (select nom from matable)
    Apres, il est vrai qu'en repondant aux questions de Kagemaru, on pourra mieux vous aider.

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

Discussions similaires

  1. [MySQL] 2 listes déroulantes liées contenu mysql et comment ne pas afficher une exception
    Par roy-mustang dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/04/2009, 14h45
  2. Liste Chainée -> Pointer Exception Erreur
    Par pingouinos_64 dans le forum Général Java
    Réponses: 1
    Dernier message: 27/02/2009, 00h40
  3. Exception sur liste.Sort();
    Par Arnard dans le forum C#
    Réponses: 1
    Dernier message: 04/01/2008, 19h44
  4. Liste des exceptions Delphi
    Par AL1986 dans le forum Langage
    Réponses: 1
    Dernier message: 21/08/2007, 12h45
  5. [VS2003][C#][liste des exceptions]
    Par lafleurlafleur dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/11/2005, 12h10

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