Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/04/2011, 17h45   #1
Futur Membre du Club
 
Homme Sébastien Deloy
Responsable d'un service sociale
Inscription : janvier 2011
Messages : 39
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Deloy
Âge : 38
Localisation : Suisse

Informations professionnelles :
Activité : Responsable d'un service sociale
Secteur : Santé

Informations forums :
Inscription : janvier 2011
Messages : 39
Points : 18
Points : 18
Par défaut Petit problème, très simple à résoudre à mon avis ! Merci d'avance

Code :
1
2
SELECT (( SELECT SUM(commandes.total_ttc) - SUM(commandes.total_brut)
FROM commandes) +  ( SELECT SUM(commandes_ext.total_ttc)  FROM commandes_ext) - ( SELECT SUM(frais.total_ttc) FROM frais)) AS benefice_total_ttc
Bonjour,
Voilà une requête qui fonctionne très bien, le seul soucie que j'ai, c'est que quand la table commande_ext ou frais est vide, le benefice total ne s'affiche plus ?!? comment régler ce problème ?

Simplement quand j'enregistre une commande_ext et frais même à 0frs celà fonctionne, sinon si il manque un seul de ses éléments, ben le total disparaît...

Un grand merci d'avance...
smookyone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2011, 18h28   #2
Membre éprouvé
 
Homme Hamid MIRA
Ingénieur développement logiciels
Inscription : septembre 2003
Messages : 177
Détails du profil
Informations personnelles :
Nom : Homme Hamid MIRA
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2003
Messages : 177
Points : 413
Points : 413
Le problème vient du fait, que Sous Sql Server, par défaut, le NULL est "absorbant", c.à.d, par exemple 5+NULL résultat NULL
Pour corriger ce genre de problème, il est conseillé de rajouter systématiquement la fonction ISNULL(xxx,0) dans les expressions arithmétiques :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
SELECT (
   ISNULL(( SELECT SUM(commandes.total_ttc) - SUM(commandes.total_brut)
      FROM commandes
    ),0) 
    +
   ISNULL(( SELECT SUM(commandes_ext.total_ttc) 
     FROM commandes_ext),0)  
    -
    ISNULL(( SELECT SUM(frais.total_ttc) 
      FROM frais),0)
 
) AS benefice_total_ttc
A+
hmira est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/04/2011, 11h55   #3
Futur Membre du Club
 
Homme Sébastien Deloy
Responsable d'un service sociale
Inscription : janvier 2011
Messages : 39
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Deloy
Âge : 38
Localisation : Suisse

Informations professionnelles :
Activité : Responsable d'un service sociale
Secteur : Santé

Informations forums :
Inscription : janvier 2011
Messages : 39
Points : 18
Points : 18
Bonjour,
J'ai du utiliser plutôt la fonction IFNULL, j'ai vu que celà fonctionnais, voici comment j'ai du corriger mon code :

Code :
1
2
SELECT ((SELECT IFNULL(SUM(commandes.total_ttc),0) - IFNULL(SUM(commandes.total_brut),0)
FROM commandes) +  (SELECT IFNULL(SUM(commandes_ext.total_ttc),0) FROM commandes_ext) - (SELECT IFNULL(SUM(frais.total_ttc),0) FROM frais)) AS benefice_total_ttc
En tout cas, c'est grâce à votre aide et un peu de détermination que celà fonctionne actuellement ! UN GRAND MERCI A VOUS HMIRA
smookyone est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h33.


 
 
 
 
Partenaires

Hébergement Web