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 :

Clause Where qui ne s’exécute pas si la table est vide


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2019
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Clause Where qui ne s’exécute pas si la table est vide
    Bonjour,

    J'aimerais savoir si vous pourriez m'aider sur mon problème ,
    voila ma requête
    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
    25
     
     
    select DTLIV,GUE.LBSPRGUE,GUE.LBGUEPRX,CLA.CDUEXSMR,CLA.CDUEXSMR+'-'+cla.LBUEXSMR as UE,CLA.LBFAM
    ,SUM(rupt.MtPCILIV) as LIV,sum(rupt.MTPCICDE) as CDE
     
     
    from PRX_FLX.LIVRAISON RUPT
    inner join PRX_REF.PRODUIT PRD
    on RUPT.ID_PRD=PRD.ID_PRD
    inner join prx_ref.classi_produit CLA
    on DTANNCLA=YEAR(DATEADD("DD",-1,cast(GETDATE() as date)))
    and PRD.CDFAM=CLA.CDFAM
    and coalesce(PRD.CDSFA,'01')=CLA.CDSFA
    inner join PRX_PARAM.GROUPES_UE GUE
    on CLA.CDUEXSMR=GUE.CDUEXSMR
    and CLA.DtANNCLA=GUE.DTANN
     
    where DTLIV between DATEADD("DD",-7,cast(GETDATE() as date)) and DATEADD("DD",-1,cast(GETDATE() as date))
    and
    (CDPRD_A in (select Code from prx_wrk.PRODUIT_TauxSERVICE where TYPE like 'produit' and IN_OUT>0)
    or PRD.CDFAM in (select Code from prx_wrk.PRODUIT_TauxSERVICE where TYPE like 'famille' and IN_OUT>0)
    or PRD.CDFAM in (select Code from prx_wrk.PRODUIT_TauxSERVICE where TYPE like 'UE' and IN_OUT>0)
    )
     
    group by DTLIV,GUE.LBSPRGUE,GUE.LBGUEPRX,CLA.CDUEXSMR,CLA.CDUEXSMR+'-'+cla.LBUEXSMR,CLA.LBFAM
    je souhaiterais que cette partie de la clause where
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    (CDPRD_A in (select Code from prx_wrk.PRODUIT_TauxSERVICE where TYPE like 'produit' and IN_OUT>0)
    or PRD.CDFAM in (select Code from prx_wrk.PRODUIT_TauxSERVICE where TYPE like 'famille' and IN_OUT>0)
    or PRD.CDFAM in (select Code from prx_wrk.PRODUIT_TauxSERVICE where TYPE like 'UE' and IN_OUT>0)
    )
    ne soit pas exécuté si la table prx_wrk.PRODUIT_TauxSERVICE est vide.

    Merci d'avance pour votre aide

  2. #2
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Tu peux rajouter simplement dans ta condition cette ligne :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    or 0 = (select count(*) from prx_wrk.PRODUIT_TauxSERVICE)

    Ce qui donne :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    (CDPRD_A in (select Code from prx_wrk.PRODUIT_TauxSERVICE where TYPE like 'produit' and IN_OUT>0)
    or PRD.CDFAM in (select Code from prx_wrk.PRODUIT_TauxSERVICE where TYPE like 'famille' and IN_OUT>0)
    or PRD.CDFAM in (select Code from prx_wrk.PRODUIT_TauxSERVICE where TYPE like 'UE' and IN_OUT>0)
    or 0 = (select count(*) from prx_wrk.PRODUIT_TauxSERVICE)
    )
    On ne jouit bien que de ce qu’on partage.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    Dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    (CDPRD_A in (select Code from prx_wrk.PRODUIT_TauxSERVICE where TYPE like 'produit' and IN_OUT>0)
    or PRD.CDFAM in (select Code from prx_wrk.PRODUIT_TauxSERVICE where TYPE like 'famille' and IN_OUT>0)
    or PRD.CDFAM in (select Code from prx_wrk.PRODUIT_TauxSERVICE where TYPE like 'UE' and IN_OUT>0)
    or 0 = (select count(*) from prx_wrk.PRODUIT_TauxSERVICE)
    )
    Tu peux remplacer les like par des = par ailleurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    or PRD.CDFAM in (select Code from prx_wrk.PRODUIT_TauxSERVICE where TYPE like 'famille' and IN_OUT>0)
    or PRD.CDFAM in (select Code from prx_wrk.PRODUIT_TauxSERVICE where TYPE like 'UE' and IN_OUT>0)
    peut être remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    or PRD.CDFAM in (select Code from prx_wrk.PRODUIT_TauxSERVICE where TYPE in ( 'famille','UE') and IN_OUT>0)
    Ce qui fait au final
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    (CDPRD_A in (select Code from prx_wrk.PRODUIT_TauxSERVICE where TYPE = 'produit' and IN_OUT>0)
    or PRD.CDFAM in (select Code from prx_wrk.PRODUIT_TauxSERVICE where TYPE in ( 'famille','UE') and IN_OUT>0)
    or 0 = (select count(*) from prx_wrk.PRODUIT_TauxSERVICE)
    )
    A+
    Soazig

Discussions similaires

  1. Clause WHERE qui ne fonctionne pas
    Par Le Serval dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/08/2012, 09h33
  2. [ZF 1.10] Clause where qui fonctionne avec type int mais pas avec type String
    Par shadypierre dans le forum Zend_Db
    Réponses: 5
    Dernier message: 30/04/2010, 13h00
  3. Clause WHERE qui ne s'exécute pas ..
    Par Bizoo dans le forum SQL
    Réponses: 5
    Dernier message: 23/12/2008, 13h20
  4. Clause WHERE qui ne fonctionne pas
    Par philippef dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 25/05/2008, 12h40
  5. [SQL2K] Clause IF qui ne marche pas ?
    Par Negaton dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 01/08/2006, 14h40

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