[MySQL] tri sur un calcul

Le
Manu Pavy
Bonjour,

J ai une requete necssitant un calcul relativement complexe et doit
afficher les lignes dont le calcul correspond un certain rsultat.
Pour simplifier, voici une requete :

select chp1 + chp2 as calcul
from table
where calcul > 5 and calcul < 10

Et je remarque que cela n'est pas possible. comment faire (hormis
rcrire le calcul) ?

Merci,

Manu
Vos réponses
Trier par : date / pertinence
newdb
Le #21725441
Manu Pavy
select chp1 + chp2 as calcul
from table
where calcul > 5 and calcul < 10



SELECT (chp1 + chp2) as total
FROM table
WHERE ( ( (chp1 + chp2) > '5' ) AND ( (chp1 + chp2) < '10' ) )

pas d'alias dans le WHERE...

--
@@@@@
E -00 Padalias : le frêre grec de Padawan !
' `) /
|_ =="
Jerome PAULIN
Le #21725431
Manu Pavy wrote:
Bonjour,

J ai une requete necéssitant un calcul relativement complexe et doit
afficher les lignes dont le calcul correspond à un certain résultat.
Pour simplifier, voici une requete :

select chp1 + chp2 as calcul
from table
where calcul > 5 and calcul < 10

Et je remarque que cela n'est pas possible. comment faire (hormis
réécrire le calcul) ?

Merci,

Manu



select chp1 + chp2 as calcul
from table
having calcul>5 and calcul<10

(on aurai aussi pu mettre having calcul between 5 and 10)

havibg sert a filtrer la table resultat...

gg
Manu Pavy
Le #21725401
select chp1 + chp2 as calcul
from table
having calcul>5 and calcul<10

(on aurai aussi pu mettre having calcul between 5 and 10)



Ok, merci pour cette info : c'est ce qu il me fallait.

Manu
Manu Pavy
Le #21725391
Manu Pavy a fait part de :


select chp1 + chp2 as calcul
from table
having calcul>5 and calcul<10

(on aurai aussi pu mettre having calcul between 5 and 10)




Ok, merci pour cette info : c'est ce qu il me fallait.

Manu


J ai relu les caractéristiques de la clause HAVING, et ce que j avais e n
tete etait que les conditions n etaient pas basées sur les données
directes, mais sur des calculs de regroupements (qui concernent
plusieurs lignes comme sum() count()) mais en fait, il s agit de toutes
formes de calculs.
Ca fait du bien de le revoir de temps en temps.

Bonne journée,

Manu
Fred BROUARD - SQLpro
Le #21725381
bonjour,

Utiliser une clause HAVING pour un simple filtre WHERE est une grande bétise en
plus d'être contre perfomant !
Ceux qui t'ont donné ce genre de conseil ne comprennent visiblement rien au
langage SQL !

la solution est très simple :

select chp1 + chp2 as calcul
from table
where (chp1 + chp2) > 5 and (chp1 + chp2) < 10

mais il y a encore plus simple et plus performant :

select chp1 + chp2 as calcul
from table
where chp1 + chp2 BETWEEN 5 and 10

A +

--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************


Manu Pavy a écrit:
Bonjour,

J ai une requete necéssitant un calcul relativement complexe et doit
afficher les lignes dont le calcul correspond à un certain résultat.
Pour simplifier, voici une requete :

select chp1 + chp2 as calcul
from table
where calcul > 5 and calcul < 10

Et je remarque que cela n'est pas possible. comment faire (hormis
réécrire le calcul) ?

Merci,

Manu

Jerome PAULIN
Le #21725371

select chp1 + chp2 as calcul
from table
where (chp1 + chp2) > 5 and (chp1 + chp2) < 10



Bonjour, monsieur jesuisleroiduSQLetjesaistoutmieuxquelesautresignares,
pourkoi tu ne cree pas fr.com.application.FREDBROUARD si on ne peut plus
proposer quelque chose en reponse à un post. A défaut d'être la
meilleure reponse, ma reponse avait au moins le merite d'exister !!!

gg
Fred BROUARD - SQLpro
Le #21725361
HAVING n'a d'intérêt que pour filtrer des résultats qui ne peuvent pas provenir
des données sources.
Cela réalise des opérations complémentaires d'entrée/sortie très pénalisante.
Donner des conseils, c'est bien, si s'en est des bons.
Mais là c'est plus que limite...
et ne pas savoir ce genre de choses basiques en donnant des conseils ne fait pas
franchement progresser la culture sur le sujet, ce serait même plutôt l'inverse
et embrouille les gens.

C'est plutôt tristement affligeant.

Désolé d'être aussi dur.

Essayez au moins de vous intéresser à la chose !

A +

Jerome PAULIN a écrit:

select chp1 + chp2 as calcul
from table
where (chp1 + chp2) > 5 and (chp1 + chp2) < 10




Bonjour, monsieur jesuisleroiduSQLetjesaistoutmieuxquelesautresignares,
pourkoi tu ne cree pas fr.com.application.FREDBROUARD si on ne peut plus
proposer quelque chose en reponse à un post. A défaut d'être la
meilleure reponse, ma reponse avait au moins le merite d'exister !!!

gg



--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
P'tit Marcel
Le #21725301
Fred BROUARD - SQLpro wrote:

HAVING n'a d'intérêt que pour filtrer des résultats qui ne peuvent pas
provenir des données sources.
Cela réalise des opérations complémentaires d'entrée/sortie très
pénalisante.



Dans ce cas de SELECT avec une seule colonne et sans GROUP BY, je ne
vois pas la surcharge que provoquerait HAVING par rapport à WHERE.

Dans les deux cas, le calcul doit être effectué avant de pouvoir filtrer
les lignes. Seules les données servant au filtre sont à renvoyer.
Publicité
Poster une réponse
Anonyme