Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
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 07/11/2007, 19h32   #1
Nouveau Membre du Club
 
Inscription : septembre 2004
Messages : 75
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 75
Points : 28
Points : 28
Par défaut Problème de syntax SELECT

Bon la requête fonctionne correctement sauf si la table preparation ne contient pas de donné.

Code :
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
 
SELECT
I.Date_Achat,
I.Stock,
I.LotEncan,
I.Detail_Model,
I.Serie,
I.Ac,
I.Odo,
I.Radio,
I.Navi,
I.Clef,
I.CoutUs,
I.Taux_Change,
I.CoutCan AS CoutCan,
I.Transport AS Transport,
I.Douane AS Douane,
I.Commission AS Commission,
I.FraisAcheteur AS FraisAcheteur,
I.Profit AS Profit,
I.Marge AS Marge,
I.Loading AS Loading,
I.Storage AS Storage,
(SELECT SUM(assfraisfix.Montant) FROM assfraisfix WHERE assfraisfix.ID_Veh = '19') AS FraisFix,
(SELECT SUM(preparation.Montant) FROM preparation WHERE preparation.ID_Veh = '19') AS Preparation,
I.CommentInterne,
I.CommentWeb,
F.Compagnie,
F.Ville,
marque.Valeur AS Marque,
model.Valeur AS Model,
anne.Valeur AS Anne,
couleur.Valeur AS Couleur,
cyl.Valeur AS Cyl,
carburant.Valeur AS Carburant,
trans.Valeur AS Trans,
type_odo.Valeur AS TypeOdo,
 
(CoutCan +
Douane +
FraisAcheteur +
Transport +
Commission +
Loading +
Storage +
(SELECT SUM(assfraisfix.Montant) FROM assfraisfix WHERE assfraisfix.ID_Veh = '19') +
(SELECT SUM(preparation.Montant) FROM preparation WHERE preparation.ID_Veh = '19')) AS SousTotal,
 
(CoutCan +
Douane +
FraisAcheteur +
Transport +
Commission +
Loading +
Storage +
(SELECT SUM(assfraisfix.Montant) FROM assfraisfix WHERE assfraisfix.ID_Veh = '19') +
(SELECT SUM(preparation.Montant) FROM preparation WHERE preparation.ID_Veh = '19') +
Marge +
Profit) AS Total,
 
 
CONCAT(Recherchiste.Nom,' ',Recherchiste.Prenom) AS Recherchiste,
CONCAT(Acheteur.Nom,' ',Acheteur.Prenom) AS Acheteur
FROM inventaire AS I
JOIN fournisseur AS F ON (F.ID = I.Fournisseur)
JOIN marque ON (marque.ID = I.Marque)
JOIN model ON (model.ID = I.Model)
JOIN anne ON (anne.ID = I.Anne)
JOIN couleur ON (couleur.ID = I.Couleur)
JOIN cyl ON (cyl.ID = I.Cyl)
JOIN carburant ON (carburant.ID = I.Carburant)
JOIN trans ON (trans.ID = I.Trans)
JOIN type_odo ON (type_odo.ID = I.TypeOdo)
JOIN personnel AS Recherchiste ON (Recherchiste.ID = I.Recherchiste)
JOIN personnel AS Acheteur ON (Acheteur.ID = I.Acheteur)
WHERE I.ID = '19'
Vue que la table preparation ne contient pas de donné pour l'entré no 19 les calcul pour le total et le sous total me retourne rien vue que null ne s'additionne pas.

COmment faire en sorte que si la sum des montants dans preparation est null faire l'addition avec 0 au lieu de la sum de montant.

J'ai esseyer de faire un if mais j'ai toujours de erreur de syntax.

Si la sum de montant de preparation n'est pas null tout se passe bien.
Roach est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2007, 20h10   #2
Nouveau Membre du Club
 
Inscription : septembre 2004
Messages : 75
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 75
Points : 28
Points : 28
J,ai ceci qui ne cause pas d'erreur de syntax, mais au lieu de retourner 0,00 si null sa retourne null.

Code :
1
2
 
(SELECT IF((SELECT SUM(preparation.Montant) FROM preparation WHERE preparation.ID_Veh = '19')=NULL,'0,00',(SELECT SUM(preparation.Montant) FROM preparation WHERE preparation.ID_Veh = '19'))) AS Preparation,
Roach est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2007, 13h57   #3
Nouveau Membre du Club
 
Inscription : septembre 2004
Messages : 75
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 75
Points : 28
Points : 28
Toujours rien de mon côté. Je croix que je vais entré une valeur de 0,00 par defaut dans la db pour ocntourner le problème. Comme cela au moins il va avoir un nombre à calculer au lieu d'un null.

Si vous avez des idées je suis preneur.

Merci
Roach est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2007, 22h00   #4
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 423
Points : 6 423
Bonjour,

essaie avec la fonction IFNULL(val1, val2), comme ça :
Code :
1
2
3
...
(SELECT SUM(IFNULL(preparation.Montant, 0)) FROM preparation WHERE preparation.ID_Veh = '19')
...
partout où tu fais référence à preparation.

ced
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2007, 14h12   #5
Nouveau Membre du Club
 
Inscription : septembre 2004
Messages : 75
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 75
Points : 28
Points : 28
Ok j'essaie cela merci.
Roach 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 10h37.


 
 
 
 
Partenaires

Hébergement Web