Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1189 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Débutant: remplacer un "null" par un "zero" ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Débutant: remplacer un "null" par un "zero" ?

n°953630
Gopherlech​ien
Posté le 15-01-2005 à 16:38:32  profilanswer
 

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.

mood
Publicité
Posté le 15-01-2005 à 16:38:32  profilanswer
 

n°953697
Beegee
Posté le 15-01-2005 à 19:30:17  profilanswer
 

Il faut faire une jointure externe.
 
Je te laisse chercher dans google "jointure externe firebird" ;)

n°953720
Gopherlech​ien
Posté le 15-01-2005 à 21:02:57  profilanswer
 

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.


Message édité par Gopherlechien le 15-01-2005 à 21:07:09
n°953738
mdevlieg
Posté le 15-01-2005 à 22:24:43  profilanswer
 

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.

n°953744
Beegee
Posté le 15-01-2005 à 23:03:55  profilanswer
 

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
Allow a column value to be calculated by a number of expressions, the first expression returning a non NULL value is returned as the column value. The function has the same meaning as NVL in Oracle.
 
Syntax:
 
        COALESCE (value {, value} ... )Notes:
 
COALESCE (V1, V2) is equivalent to the following case specification:
             CASE WHEN V1 IS NOT NULL THEN V1 ELSE V2 END  
COALESCE (V1, V2, ..., Vn), for n >= 3, is equivalent to the following case specification:
             CASE WHEN V1 IS NOT NULL THEN V1 ELSE COALESCE (V2, ..., Vn) END  
Example:
 
        SELECT
          PROJ_NAME AS Projectname,
          COALESCE(e.FULL_NAME, '[> not assigned <]') AS Employeename
        FROM
          PROJECT p LEFT JOIN EMPLOYEE e ON (e.EMP_NO = p.TEAM_LEADER)


Message édité par Beegee le 15-01-2005 à 23:06:34
n°953746
Gopherlech​ien
Posté le 15-01-2005 à 23:13:50  profilanswer
 

ISNULL ne fonctionne pas avec firebird, je vais approfondir COALESCE:
ça fonctionne du tonnerre!
Merci beaucoup à vous.


Message édité par Gopherlechien le 16-01-2005 à 08:45:30

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Débutant: remplacer un "null" par un "zero" ?

 

Sujets relatifs
débutantVb excel : Afficher une liste deroulante ....debutant inside
[Java]Projet Débutant / faisabilitéAide pour mon examen !!!! (débutant)
Question divers pour débutantDebutant en prog jeux en c++
Probleme ente 2 types: Graphics / Component [Debutant]Quelques questions de debutant...
Erreur de lien .h (débutant)remise a zero d'un tableau ?
Plus de sujets relatifs à : Débutant: remplacer un "null" par un "zero" ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR