Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[MySQL] tri sur un calcul

8 réponses
Avatar
Manu Pavy
Bonjour,

J ai une requete nec=E9ssitant un calcul relativement complexe et doit=20
afficher les lignes dont le calcul correspond =E0 un certain r=E9sultat.
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=20
r=E9=E9crire le calcul) ?

Merci,

Manu

8 réponses

Avatar
newdb
Manu Pavy wrote:
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 !
' `) /
|_ =="
Avatar
Jerome PAULIN
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
Avatar
Manu Pavy
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
Avatar
Manu Pavy
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
Avatar
Fred BROUARD - SQLpro
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

Avatar
Jerome PAULIN

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
Avatar
Fred BROUARD - SQLpro
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 *************************
Avatar
P'tit Marcel
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.