Précédent   Forum des professionnels en informatique > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
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 18/07/2011, 10h56   #1
Membre Expert
 
Homme AbdelHakim Kellouche
Inscription : mai 2008
Messages : 1 977
Détails du profil
Informations personnelles :
Nom : Homme AbdelHakim Kellouche
Localisation : Algérie

Informations professionnelles :
Secteur : Service public

Informations forums :
Inscription : mai 2008
Messages : 1 977
Points : 2 126
Points : 2 126
Envoyer un message via MSN à Just-Soft Envoyer un message via Skype™ à Just-Soft
Par défaut Problème de nommage

Salut !

mon code
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
select 
    tb_sr.nom_sr,
    tb_sr_service.date_bilan,
    tb_energie.montant_facture,
    tb_sr_service.volume_releve,
    (tb_energie.montant_facture + tb_frais_exploitations.fr_mnt_consommable +
    tb_frais_exploitations.autre_fr_carburant + tb_frais_exploitations.autre_fr_prestation +
    tb_frais_exploitations.autre_fr_materiaux + tb_frais_exploitations.autre_fr_autre +
    tb_frais_exploitations.frais_salaire_cadre + tb_frais_exploitations.frais_salaire_maitrise +
    tb_frais_exploitations.frais_salaire_execution) montant_global,
    montant_global/tb_sr_service.volume_releve

from tb_frais_exploitations
   inner join tb_sr_service on (tb_frais_exploitations.code_sr = tb_sr_service.code_sr) and (tb_frais_exploitations.date_mois = tb_sr_service.date_bilan)
   inner join tb_energie on (tb_sr_service.code_sr = tb_energie.code_sr) and (tb_sr_service.date_bilan = tb_energie.date_mois)
   inner join tb_sr on (tb_sr_service.code_sr = tb_sr.code_sr)
FB ne reconnait pas le champ "montant_global" dans le second champs calculé ! donc je suis obligé de réécrire toute l'expression ! y'a t-il un moyen pour forcer FB à accepter le nom du champ calculé dans la seconde expression ?
__________________
Bon courage ou Bonne Chance (selon le contexte)
Just-Soft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2011, 12h32   #2
Modérateur
 
Avatar de SergioMaster
 
Serge Girard
Développeur informatique
Inscription : janvier 2007
Messages : 3 613
Détails du profil
Informations personnelles :
Nom : Serge Girard
Âge : 55
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2007
Messages : 3 613
Points : 4 516
Points : 4 516
Ouch !!

bon , déjà il manque un AS montant_global
ensuite tu pourrais peut-être utiliser des alias de table pour une lecture plus facile
ajouter une colonne computed a la table tb_frais_exploitations réduirais aussi considérablement la taille de ta formule

Code :
1
2
3
4
5
6
7
8
ALTER TABLE  tb_frais_exploitations ADD FRAIS COMPUTED BY (fr_mnt_consommable +
 autre_fr_carburant 
 autre_fr_prestation +
 autre_fr_materiaux +
 autre_fr_autre +
 frais_salaire_cadre + 
 frais_salaire_maitrise +
 frais_salaire_execution)
mais sinon , oui , tu es obligé de répéter la formule , a moins peut etre de passer par une CTE , mais j'ai pas trop la tête a la formuler
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
SergioMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2011, 13h37   #3
Membre Expert
 
Homme AbdelHakim Kellouche
Inscription : mai 2008
Messages : 1 977
Détails du profil
Informations personnelles :
Nom : Homme AbdelHakim Kellouche
Localisation : Algérie

Informations professionnelles :
Secteur : Service public

Informations forums :
Inscription : mai 2008
Messages : 1 977
Points : 2 126
Points : 2 126
Envoyer un message via MSN à Just-Soft Envoyer un message via Skype™ à Just-Soft
Salut Serge et merci pour l'astuce du "computed"

je viens de mettre un peu d'ordre mais le résultat retourné dans le champ calculé est de type entier or avec l'ancien code j'avais du réel et c'est ce que je veux.

tout naturellement j'ai fais un cast mais j'ai pas eu le résultat escompté, voici mon code aménagé :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT
    d.nom_sr,
    b.date_bilan,
    c.montant_facture,
    b.volume_releve,
    a.frais,
    cast(a.frais/nullif(b.volume_releve,0) AS numeric(15,4)) AS prix_de_revient_m3_releve
 
FROM tb_frais_exploitations a
   INNER JOIN tb_sr_service b ON (a.code_sr = b.code_sr)
   AND (a.date_mois = b.date_bilan)
   INNER JOIN tb_energie c ON (b.code_sr = c.code_sr)
   AND (b.date_bilan = c.date_mois)
   INNER JOIN tb_sr d ON (b.code_sr = d.code_sr)
__________________
Bon courage ou Bonne Chance (selon le contexte)
Just-Soft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2011, 14h08   #4
Membre Expert
 
Homme AbdelHakim Kellouche
Inscription : mai 2008
Messages : 1 977
Détails du profil
Informations personnelles :
Nom : Homme AbdelHakim Kellouche
Localisation : Algérie

Informations professionnelles :
Secteur : Service public

Informations forums :
Inscription : mai 2008
Messages : 1 977
Points : 2 126
Points : 2 126
Envoyer un message via MSN à Just-Soft Envoyer un message via Skype™ à Just-Soft
Re,

je viens de régler le problème, le cast était mal placé, voici la correction :
Code :
(cast(a.frais AS numeric(15,4))/nullif(b.volume_releve,0)) AS prix_de_revient_m3_releve
__________________
Bon courage ou Bonne Chance (selon le contexte)
Just-Soft 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 13h06.


 
 
 
 
Partenaires

Hébergement Web