opérations sur des alias SQL

opérations sur des alias SQL - SQL/NoSQL - Programmation

Marsh Posté le 29-09-2005 à 10:50:37    

hello,
 
petit soucis.
j'ai ca
 
select sum(champs) as qte,count(champs2) as participants from table;
 
ca marche mais j'aimerai pouvoir ajouter un 3 em champs correspondant a qte/participants
 
le probleme c'est qu'en faisant l'opération via les alias ca passe pas. est ce que je m y prend mal ?
 
Sinon, deuxieme question,
si je fait  
select sum(champs),count(champs2) ,sum(champs)/count(champs2)  from table;
 
ca repond a mes attentes mais est ce que les calculs (sum et count) sont stockés en cache ou bien les calculs sont refait ?
 
vous en pensez quoi ?
c'est a eviter ?
 
 
Merci


Message édité par veryfree le 29-09-2005 à 11:00:22
Reply

Marsh Posté le 29-09-2005 à 10:50:37   

Reply

Marsh Posté le 29-09-2005 à 10:57:04    

je pense qu'il n'y a pas d'autre solution

Reply

Marsh Posté le 29-09-2005 à 10:57:10    

select sum(champs), count(champs2), sum(champs)/count(champs2)
from table;
 
=> ça devrait marcher et faire ce que tu veux. Je ne comprends pas ta question "est ce que les calculs (sum et count) sont stocké en cache ?".
 
Sinon pour utiliser les alias, il faut en général qu'ils soient dans une sous-requête.
 
Exemple :  
 
select qte, participants, qte/participants qte_moyenne
from (select sum(champs) as qte,count(champs2) as participants from table);
 
edit : la perte de perfs doit être minime avec la sous-requête (par contre le SGBD peut ne pas accepter les sous-requêtes).
C'est intéressant d'utiliser des sous-requêtes et alias pour des raisons de lecture plus simple du code, et maintenance plus facile, par conséquent ça vaut le coup quand les données en alias sont utilisées de nombreuses fois. Dans ton cas ça n'apporte pas grand chose :D

Message cité 1 fois
Message édité par Beegee le 29-09-2005 à 10:59:18
Reply

Marsh Posté le 29-09-2005 à 10:59:14    

Beegee a écrit :

select sum(champs), count(champs2), sum(champs)/count(champs2)
from table;
 
=> ça devrait marcher et faire ce que tu veux. Je ne comprends pas ta question "est ce que les calculs (sum et count) sont stocké en cache ?".
 


 
je craint juste qu'il calcule la somme 2 fois ( chose que je veux eviter absolument )

Beegee a écrit :


Sinon pour utiliser les alias, il faut en général qu'ils soient dans une sous-requête.
 
Exemple :  
 
select qte, participants, qte/participants qte_moyenne
from (select sum(champs) as qte,count(champs2) as participants from table);


 
je comprend mais dans mon cas ce serai pas possible alors
 
 
merci pour votre aide en tout cas :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed