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 :

Requête à 3 conditions


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 1
    Par défaut Requête à 3 conditions
    Bonjour,
    voilà mon problème: je parcoure un fichier Excel (pour ca pas de problèmes je sais faire) puis pour chacun des enregistrements que je lis dans le fichier .XLS, je dois effectuer 3 tests :
    1er test:
    si 1 valeur/champ "Excel" = 1 valeur dans une table de ma base ET si un autre champ de ma table = 'bla bla' ALORS je dois faire un UPDATE dans cette table
    2eme test:
    si 1 valeur trouvé dans "Excel" et que cette valeur n'existe pas dans ma table de ma base ALORS je dois faire un INSERT dans ma table
    3eme test:
    si 1 valeur/champ "Excel" = 1 valeur dans une table de ma base ET si un autre champ de ma table <> 'bla bla' ALORS je ne dois rien faire.
    Auriez-vous une solution élégante pour écrire ce script SQL pour SQL Server 2005 version EXPRESS ?
    Merci de votre aide

  2. #2
    Membre expérimenté
    Inscrit en
    Février 2009
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 224
    Par défaut
    avec SQL Server 2008 (même en édition EXPRESS) je vous aurai conseillé le MERGE, mais en SQL 2005 rien ne remplace le bon vieux si allors sinon

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2009
    Messages : 133
    Par défaut
    odetrain,
    Tu recherches qlq chose de ce genre :
    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
     
    CREATE PROCEDURE [dbo].[UpsertTABLE1] 
    (
      @Champ1 int
    , @champ2 varchar(50) 
    , @champ3 varchar(50) 
    , @champ4 varchar(50) 
    )
    AS
    SET NOCOUNT ON; 
    IF NOT EXISTS ( SELECT * FROM TABLE1 WHERE Champ1 = @Champ1 )
    	BEGIN 
    		INSERT INTO TABLE1 (Champ1, Champ2, Champ3, Champ4)
    		VALUES (@Champ1, @Champ2, @Champ3, @Champ4) 
    	END
    ELSE
    BEGIN
    IF EXISTS ( SELECT * FROM TABLE1 WHERE Champ1 = @Champ1 AND Champ2 = @Champ2 )
    	BEGIN
    		UPDATE TABLE1 
    		SET Champ3 = @Champ3, Champ4 = @Champ4
    		WHERE Champ1 = @Champ1 AND Champ2 = @Champ2
    	END
    END
    En espérant que cela t'aide un peu !
    nachtigal.

Discussions similaires

  1. [MySQL] Requête avec condition sur un champ
    Par nonhosonno dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/02/2007, 14h00
  2. [MySQL] pb de requête avec conditions, débutant
    Par carelha dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 30/11/2006, 19h35
  3. Requête avec condition
    Par lolo_bob2 dans le forum Access
    Réponses: 1
    Dernier message: 08/06/2006, 19h59
  4. [Requête]Requête avec condition
    Par Miles Raymond dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 23/05/2006, 08h30
  5. Calcul requête avec conditions multiples
    Par Phullbrick dans le forum Access
    Réponses: 7
    Dernier message: 18/04/2006, 13h45

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