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 :

Requete SQL - IF EXIST


Sujet :

Développement SQL Server

  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 124
    Par défaut Requete SQL - IF EXIST
    Bonjour,

    J'ai réalisé la requête SQL suivante (Je n'ai jamais utilisé de IF en SQL, c'est une première):
    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
    IF EXISTS
      (
        SELECT S.DATE_STERILISATION,L.DATE_UTILISATION
        FROM DATA_TEST.ODS_EUROMYCEL_SEIGLE S 	
        INNER JOIN DATA_TEST.ODS_EUROMYCEL_LIP L ON S.DATE_STERILISATION = L.DATE_UTILISATION-1 
      )
          ELSE
          (  
        SELECT S.DATE_STERILISATION,L.DATE_UTILISATION
        FROM DATA_TEST.ODS_EUROMYCEL_SEIGLE S 	
        INNER JOIN DATA_TEST.ODS_EUROMYCEL_LIP L ON S.DATE_STERILISATION = L.DATE_UTILISATION-2
         )
            ELSE
              (
                SELECT S.DATE_STERILISATION,L.DATE_UTILISATION
                FROM DATA_TEST.ODS_EUROMYCEL_SEIGLE S 	
               INNER JOIN DATA_TEST.ODS_EUROMYCEL_LIP L ON S.DATE_STERILISATION = L.DATE_UTILISATION-3 
               )
    END IF;

    Je souhaite réaliser une requête qui regarde si date_sterilisation = date_utilisation-1 existe alors on réalise la jointure
    sinon on regarde si date_sterilisation = date_utilisation-2 existe alors on réalise la jointure sinon on regarde si date_sterilisation = date_utilisation-3 existe et on réalise la jointure.

    La requête que j'ai réalisé ne fonctionne pas, j'ai le premier "else" qui est souligné en rouge. Donc si vous pouvez m'aiguiller à ce niveau là, ça m'aiderais.

    Merci d'avance .

  2. #2
    Invité
    Invité(e)
    Par défaut
    Franchement, vous auriez du prendre 30 secondes pour apprendre la syntaxe d'un IF ... ELSE au lieu de poster sur le forum : https://msdn.microsoft.com/fr-ca/library/ms182717.aspx

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    -- Syntax for SQL Server, Azure SQL Database, Azure SQL Data Warehouse, Parallel Data Warehouse  
     
    IF Boolean_expression   
         { sql_statement | statement_block }   
    [ ELSE   
         { sql_statement | statement_block } ]

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 124
    Par défaut Réponse à 7gyY9w1ZY6ySRgPeaefZ
    Merci pour cette réponse très utile !

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    vous ne pouvez pas faire de jointure conditionnelle tel que vous le faites avec un IF, qui est une structure de contrôle du langage TSQL.

    A première vue, vous pouvez effectuer trois jointures externes, et prendre la première colonne non null.

    Sur ce principe là (pas testé)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT S.DATE_STERILISATION,COALESCE(L1.DATE_UTILISATION,L2.DATE_UTILISATION,L3.DATE_UTILISATION) AS DATE_UTILISATION
        FROM DATA_TEST.ODS_EUROMYCEL_SEIGLE S 	
        LEFT JOIN DATA_TEST.ODS_EUROMYCEL_LIP L1 ON S.DATE_STERILISATION = L.DATE_UTILISATION-1 
        LEFT JOIN DATA_TEST.ODS_EUROMYCEL_LIP L2 ON S.DATE_STERILISATION = L.DATE_UTILISATION-2 
        LEFT JOIN DATA_TEST.ODS_EUROMYCEL_LIP L3 ON S.DATE_STERILISATION = L.DATE_UTILISATION-3

    Exposez nous votre besoin fonctionnel, il y aura peut-être plus simple et/ou plus efficace

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 124
    Par défaut Réponse aieeeuuuuu
    Merci pour votre réponse, et vous venez de m'apprendre quelque chose

    Je vais essayer le code que vous m'avez envoyé en l'adaptant à mon besoin et je reviendrai une fois la solution trouvée

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

Discussions similaires

  1. Inclure une requete SQL dans un rapport existant
    Par souhail72 dans le forum Formules
    Réponses: 2
    Dernier message: 06/01/2014, 13h32
  2. requete SQL intersect/not exist
    Par Baldric de Dol dans le forum Langage SQL
    Réponses: 2
    Dernier message: 08/10/2008, 17h18
  3. Réponses: 2
    Dernier message: 08/11/2007, 10h54
  4. Réponses: 2
    Dernier message: 08/11/2007, 10h54
  5. [SQL] requete ajout si existant
    Par J_Yohan dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 10/04/2007, 15h53

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