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

MS SQL Server Discussion :

Vérification de l'existence de données dans une table avant insertion


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Homme Profil pro
    Etudiant (domaine de prédilection java)
    Inscrit en
    Mars 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant (domaine de prédilection java)
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2012
    Messages : 71
    Points : 62
    Points
    62
    Par défaut Vérification de l'existence de données dans une table avant insertion
    Bonsoir tout le monde,
    Je voudrais savoir, svp, comment on fait pour vérifier qu'une donnée existe dans une table avant d'en rajouter, histoire d'éviter les doublons.
    Concrètement, j'ai importé un fichier excel via ssms dans une table, réalisé la connexion à la base dans java, et essayé de faire correspondre à chaque champ son équivalent dans ma base, en récupérant la clé générée...

    Exemple concret:dans ma base j'ai 4 tables(je vais pas donner les noms exacts, secret d'entreprise oblige...mon tuteur connait très bien ce forum....)
    Contrat(id_contrat, id_pays, id_techno, nom_contrat); Techno(id_techno, nom_techno), Pays(id_pays, id_region, nom_pays), Region(id_region, nom_region). Les clés sont autoincrémentées.
    Le fichier(transformé en table) a les champs suivants table_Importee(nom_contrat,nom_techno, nom_pays, nom_region). Dans mon code java, j'insère d'abord le nom de région, je récupère la clé que j'insère dans la table pays en même temps que le nom_pays, puis récupère la clé et enfin insère dans la table Contrat. Schématiquement ça donne Region-->Pays--> Contrat d'une part, et Techno-->Contrat d'autre part.


    -->j'aimerais supprimer les lignes dans la table table_Importee où le même nom de contrat revient. Je pourrais avoir par exemple: (OM, F50,Allemagne, EUR) et (OM, F60, France, Eur), eh bien j'aimerais que l'un des deux disparaisse, soit au niveau de la table (suppression de ces "doublons" là), ou lors de l'insertion(si un nom similaire existe, on passe au suivant).

    -->Je voudrais que dans le cas des tables PAYS,REGION et TECHNO, il n'y ait qu'une seule occurrence par valeur (par exemple si pour l'ensemble des 5000 enregistrements qui constituent la table importée les pays sont répartis suivant 4 régions, la table région devrait contenir juste 4 enregistrements...)

    S'il vous plait quelle requête pourrais-je utiliser? le peu de connaissance que j'ai en t-sql y est déja passé, sans que je trouve de solution
    Bien voila, je m'arrête ici pour l'instant, en vous remerciant d'être arrivé au bout de ce loooooooooooonnng message.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 862
    Points : 53 013
    Points
    53 013
    Billets dans le blog
    6
    Par défaut
    1) en mettant une contrainte d'unicité
    2) pour éviter l'insertion de lignes déja exitantes, faites un UPDATE avec une sous requête de type NOT EXISTS(....=.

    A +

  3. #3
    Membre du Club
    Homme Profil pro
    Etudiant (domaine de prédilection java)
    Inscrit en
    Mars 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant (domaine de prédilection java)
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2012
    Messages : 71
    Points : 62
    Points
    62
    Par défaut
    Merci sqlpro,
    Les 2 solutions sont-elles à déployer exclusivement ou toutes les 2 en même temps?

Discussions similaires

  1. Réponses: 12
    Dernier message: 25/11/2010, 16h35
  2. Vérifier l'existence de données dans une table
    Par amerex dans le forum VBA Access
    Réponses: 2
    Dernier message: 03/01/2009, 20h01
  3. [MySQL] Vérifier l'existance d'une donnée dans la base avant insertion
    Par Him dans le forum PHP & Base de données
    Réponses: 26
    Dernier message: 16/07/2006, 15h47
  4. Vérification de donné dans une table access
    Par xdiethank dans le forum VBA Access
    Réponses: 3
    Dernier message: 11/05/2006, 15h29
  5. Réponses: 2
    Dernier message: 15/06/2005, 17h32

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