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 :

SUMPRODUCT et SQL


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2005
    Messages : 218
    Points : 85
    Points
    85
    Par défaut SUMPRODUCT et SQL
    Hello

    J essaye de transcrire un logigramme en requete sql.

    Voici le logigramme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Colonne A = "Auto"
    ET
    Colonne C = " "
    ET
    Colonne F = $C28
    ET
    Colonne H = ("NEWFOUNDLAND" OU "NOVA SCOTIA" OU "NEW BRUNSWICK" OU "PRINCE EDWARD ISLAND")
    ET
    Colonne O >= table!$M$5
    ET
    (Colonne O <= tabl!$M$4 ET Colonne Q >= table!$M$5) OU (Colonne O > tabl!$M$4 ET Colonne Q <= table!$M$4 ET Colonne Q >= table!$M$5)

    Je me concentre sur cette partie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    (...)
    Colonne O >= table!$M$5
    ET
    (Colonne O <= tabl!$M$4 ET Colonne Q >= table!$M$5) OU (Colonne O > tabl!$M$4 ET Colonne Q <= table!$M$4 ET Colonne Q >= table!$M$5)
    Voila comment je la transcris.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    (...)
     ft.Section_Closed_Date >= @PYPriorMthEnd
    AND( ( ft.Section_Closed_Date <=@PYCurrentMthEnd) AND (ft.Claim_Closed_Date >= @PYPriorMthEnd) OR
    ( (ft.Section_Closed_Date >@PYCurrentMthEnd) AND (ft.Claim_Closed_Date<=@PYCurrentMthEnd) AND (ft.Claim_Closed_Date >=@PYPriorMthEnd) ) )
    Mais je ne retrouve pas le meme resultat. Est ce qu'il y a une souci avec ma transcription SQL?

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 092
    Points : 9 475
    Points
    9 475
    Par défaut
    Quand il y a des OR, il faut faire très attention aux parenthèses.

    Ici tu as des parenthèses qui ne servent à rien ( pas génant pour le moteur SQL, mais génant pour lire la requete.
    Si on enlève ces parenthèses qui ne servent à rien, ta requête devient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    (...)
     ft.Section_Closed_Date >= @PYPriorMthEnd
    AND 
      (   ft.Section_Closed_Date <=@PYCurrentMthEnd  AND ft.Claim_Closed_Date >= @PYPriorMthEnd  OR
          ( ft.Section_Closed_Date >@PYCurrentMthEnd AND ft.Claim_Closed_Date<=@PYCurrentMthEnd   AND ft.Claim_Closed_Date >=@PYPriorMthEnd ) 
      )
    Ta requête finit donc pas ( Condition1 AND Condition2 OR condition3 )
    Mais je suis incapable de te dire si SQL va l'interpréter comme :
    ( ( Condition1 AND Condition2 ) OR condition3 )
    ou bien
    ( Condition1 AND ( Condition2 OR condition3 ) )
    mais probablement, SQL n'interprète pas comme tu aurais imaginer.
    Donc dans le doute, ajoute les bonnes parenthèses ...

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 300
    Points : 39 641
    Points
    39 641
    Billets dans le blog
    9
    Par défaut
    Si en mathématiques le AND est prioritaire par rapport au OR, dans les langages informatiques, il n'y a pas de règle, chaque langage a choisi sa propre logique

    Pour éviter les erreurs et faciliter la compréhension, l'usage des parenthèses s'impose !

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2005
    Messages : 218
    Points : 85
    Points
    85
    Par défaut
    Merci bcp pour votre aide.
    Je n'arrive toujours pas a retrouver la bonne valeur ( je me casse la tete dessus depuis vendredi)
    Je vous tiendrai au courant si je trouve.

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 849
    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 849
    Points : 52 975
    Points
    52 975
    Billets dans le blog
    6
    Par défaut
    Littéralement en SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    WHERE 
    Colonne A = 'Auto'
    AND
    Colonne C = ' '
    AND
    Colonne F = $C28
    AND
    Colonne H IN ('NEWFOUNDLAND', 'NOVA SCOTIA', 'NEW BRUNSWICK', 'PRINCE EDWARD ISLAND')
    AND
    Colonne O >= table!$M$5
    AND
    ((Colonne O <= tabl!$M$4 AND Colonne Q >= table!$M$5) OR (Colonne O > tabl!$M$4 AND Colonne Q <= table!$M$4 AND Colonne Q >= table!$M$5))
    Remplacez vos appels de cellule par les noms des colonnes de table en plaçant vos tables dans la clause FROM de la requête sous forme de jointures.

    A +

Discussions similaires

  1. L'avenir du BDE et des SQL Links révélé ! <officiel>
    Par Merlin dans le forum Bases de données
    Réponses: 12
    Dernier message: 02/06/2006, 10h18
  2. Pb migration Access / SQL server
    Par yoyo dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 25/04/2005, 10h39
  3. Backup BD SQL Server
    Par Ethmane dans le forum Administration
    Réponses: 3
    Dernier message: 07/06/2002, 00h42
  4. Cours, tutoriels, logiciels, F.A.Q,... pour le langage SQL
    Par Marc Lussac dans le forum Langage SQL
    Réponses: 0
    Dernier message: 04/04/2002, 10h21

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