|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2005 Messages : 30 ![]() |
bonjour,
je voulais simplement savoir pourquoi il n'est pas possible d'effectuer, dans une requète SELECT, une opération sur des champs qui sont déjà le résultat d'autres opérations: petit exemple très simple pour illustrer: Code :
Code :
Unknown COLUMN 'nb_max' IN 'field list' |
||
|
|
00
|
|
|
#2 | ||
![]() ![]() Michel Consultant informatique Inscription : mai 2005 Messages : 3 006 ![]() |
salut,
tu ne peux pas,sauf erreur de ma part mettre des alias directement apres le select je ferais plus ceci : Code :
|
||
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2005 Messages : 30 ![]() |
effectivement, on ne peut pas et c'est justement mon grand désarroi:
parceque là, j'ai fait un exemple simplissime avec juste MAX et MIN; mais dans mon utilisation, les champs nb_max et nb_min sont des résultats de sous-requètes complexes avec des clauses WHERE et tout et tout, donc je ne peux absolument pas répéter les champs complets pour le calcul du champ ecart ! je dois donc migrer sous MySql 5 et utiliser des VIEW ou PROCEDURE ou FUNCTION ? |
|
|
00
|
|
|
#4 |
![]() ![]() Michel Consultant informatique Inscription : mai 2005 Messages : 3 006 ![]() |
OK, je comprends mieux ton souci.
par contre je suis resté a la version 4.1, donc je peux pas trop te dire comment on peut s'en sortir avec les vues bon courage Michel |
|
|
00
|
|
|
#5 | |||
|
Membre éprouvé
![]() Christophe CharronDéveloppeur informatique Inscription : juillet 2005 Messages : 768 ![]() |
Citation:
__________________
Cordialement, Christophe Charron Pour consulter mon site professionnel, vous pouvez cliquer sur le bouton prévu à cet effet, juste sous la signature |
|||
|
|
00
|
|
|
#6 |
![]() ![]() Michel Consultant informatique Inscription : mai 2005 Messages : 3 006 ![]() |
oui cela fonctionne mais ce n'est pas ce qu'il cherche...
|
|
|
00
|
|
|
#7 |
|
Provisoirement toléré
Inscription : juin 2003 Messages : 2 622 ![]() |
Salut,
Tu peux nous donner la requête qui pose problème ? Il y a peut-être moyen de la simplifier...
__________________
Pensez au bouton
|
|
|
00
|
|
|
#8 | ||||
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2005 Messages : 30 ![]() |
en fait, c'était une question d'ordre général, parceque je rencontre ce besoin assez souvent:
pour l'affichage d'un bilan sous forme de tableau HTML, on a besoin de toutes les colonnes, notamment la colonne total qui est soit une somme, soit une différence, soit un calcul plus complexe avec les colonnes précédentes... je fais donc l'opération nécessaire en PhP lorsque je récupère ma requète SQL, mais j'aurais justement aimé la faire directement dans la requète SQL, pour n'utiliser PhP que pour l'affichage HTML. j'ai, par exemple pour afficher le bilan des congés pris par les employés sur l'année sélectionnée, une requète du type: Code :
Code :
avez-vous une idée, des conseils? |
||||
|
|
00
|
|
|
#9 |
|
Provisoirement toléré
Inscription : juin 2003 Messages : 2 622 ![]() |
En utilisant des jointures plutôt que des sous-requêtes, les éléments de ton SELECT seraient certainement plus simples et plus facilement utilisables dans des opérations mathématiques.
Par ailleurs il y a plus de chances que l'optimiseur repère que "SUM(ad.nb)" et "SUM(ad.nb)" sont la même chose, qu'avec "SELECT SUM(ad.nb) FROM absences_droits as ad WHERE blabla..." et "SELECT SUM(ad.nb) FROM absences_droits as ad WHERE blabla..."
__________________
Pensez au bouton
|
|
|
00
|
|
|
#10 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2005 Messages : 30 ![]() |
ha bin justement, çà m'intéresse !! c'est le deuxième gros problème que j'ai en ce moment...
j'avais justement commencé par des jointures pour éviter que cette requète soit si lourde, mais je n'ai pas trouvé la bonne syntaxe pour obtenir le bon résultat: avec une seule jointure de la première table : LEFT JOIN absences_droits, là ça va... mais dès que je rajoutais la deuxième jointure LEFT JOIN absences, je n'arrivais pas à choper les bons résultats, puisqu'il me sortait le produit cartésien : Code :
quelle serait la bonne syntaxe de requète de jointure? |
||
|
|
00
|
|
|
#11 | ||
|
Provisoirement toléré
Inscription : juin 2003 Messages : 2 622 ![]() |
Un truc de ce style peut-être (à l'arrache, pas testé) :
Code :
__________________
Pensez au bouton
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com