Débutant: remplacer un "null" par un "zero" ? - SQL/NoSQL - Programmation
Marsh Posté le 15-01-2005 à 19:30:17
Il faut faire une jointure externe.
Je te laisse chercher dans google "jointure externe firebird"
Marsh Posté le 15-01-2005 à 21:02:57
la recherche donne: "Le (+) peut s'interpréter comme l'ajout d'une ligne fictive dont toutes les colonnes ont la valeur NULL, et qui réalise la correspondance avec les lignes de l'autre table qui n'ont pas de correspondant réel. Dans l'exemple cité, la valeur de nom associée au département 40 est la valeur NULL."
J'ai du mal m'exprimer car c'est exactement ce que j'ai fait mais mon probleme est que les produits qui n'ont pas de correspondance dans la table vente sont renvoyés avec "null" comme valeur de quantité vendue => pas de calcul possible sur une valeur "null" (il me faudrait 0 comme valeur).
merci tout de même.
Marsh Posté le 15-01-2005 à 22:24:43
Je te propose deux solutions, mais je ne promet pas que ce soit ce que tu attends.
Tu peux creer une table temporaire pour recevoir les données du select puis remplacer les NULL par des zeros.
Tu peux faire une jointure sur deux select (produit dans les deux tables et produit que dans stock) puis utiliser ISNULL() sur le deuxieme select.
Marsh Posté le 15-01-2005 à 23:03:55
Sous Oracle tu aurais pu utiliser NVL (ou même DECODE).
Avec Firebird, il doit y avoir une fonction voisine.
edit : une piste ici :
http://www.destructor.de/firebird/1.5/whatsnew.htm
Je cite :
Citation : New COALESCE internal function |
Marsh Posté le 15-01-2005 à 23:13:50
ISNULL ne fonctionne pas avec firebird, je vais approfondir COALESCE:
ça fonctionne du tonnerre!
Merci beaucoup à vous.
Marsh Posté le 15-01-2005 à 16:38:32
Sous Firebird 1.5, j'ai créé une vue, résultat d'un select avec jointure gauche entre une table "stock" avec tous les produits et une table "Ventes" avec uniquement les produits vendus. Je voudrais faire la somme entre les quantités vendues et celles en stock pour obtenir la quantité d'origine (avant vente) or la jointure implique des champs à "null" pour les produits jamais vendus et je ne sais pas comment transformer ces "null" en Zero (ou ne pas avoir ces "null" ) pour pouvoir calculer.
je débute et demande des pistes à ceux qui savent.
merci d'avance.