condition sur un alias [MySQL] - SQL/NoSQL - Programmation
Marsh Posté le 12-05-2008 à 10:38:37
SELECT *
FROM
(
SELECT e.nom, s.salaire AS 'salaire en euros'
FROM employes e LEFT OUTER JOIN salaires s ON s.id_employe = e.id_employe
) as Result
WHERE 'salaire en euros' > 100;
ou si plusieurs lignes dans SALAIRE pour un employé
SELECT *
FROM
(
SELECT e.nom, sum(s.salaire) AS 'salaire en euros'
FROM employes e LEFT OUTER JOIN salaires s ON s.id_employe = e.id_employe
GROUP BY e.nom
) as Result
WHERE 'salaire en euros' > 100;
Je ne sais pas si ça marche avec MySQL. En tout cas, ça marche avec ORACLE et SQL SERVER.
Marsh Posté le 12-05-2008 à 10:39:47
Euuuh, pourquoi tu fais un group by, là, concrètement ?
Code :
|
Marsh Posté le 12-05-2008 à 13:38:12
sielfried a écrit : Euuuh, pourquoi tu fais un group by, là, concrètement ?
|
bastok a écrit : |
Et pour utiliser HAVING, faut un GROUP BY
Marsh Posté le 12-05-2008 à 14:47:05
Non, en MySQL ce n'est pas du tout obligatoire (edit: à partir de MySQL 5.0.2 pour avoir vérifié, donc bon pour toi.)
Et sinon suffit de faire ta condition directement sur s.salaire ?
(À moins que t'ais simplifié la chose pour l'exemple, et que ce soit en fait une donnée calculée. Dans ce cas HAVING marche très bien.)
Marsh Posté le 12-05-2008 à 14:47:40
Code :
|
pas la peine d'utiliser ton alias dans le filtre ...
Marsh Posté le 13-05-2008 à 10:43:11
bastok a écrit :
|
100 => le nombre 100
'100' => la chaîne de caractères 100
'salaire en euros' => la chaîne de caractères 'salaire en euros'
"salaire en euros" => l'alias pour un nombre
Marsh Posté le 12-05-2008 à 06:13:11
Bonjour,
Je me trouve confronté à un problème avec MySQL 5.0.51b-community-ntqui qui apparemment a été abordé plusieurs fois, mais je n'ai pas trouvé de réponse satisfaisante.
Voici mon problème :
Imaginons deux tables :
EMPLOYES SALAIRES
---------- --------
ID_EMPLOYE ID_SALAIRE
NOM ID_EMPLOYE
SALAIRE
dans la table employé on trouve :
1 DUPONT
2 DURAND
et dans la table salaires :
1 2 1500
maintenant j'execute la requete suivante :
La requête va me sortir aucun résultat. Si par contre je met entre quote '100' à ce moment là ca me sort tous les résultats.
Je suis obligé de passer par un GROUP BY, d'après le manuel de MySQL 5, il est impossible de faire un WHERE sur un alias, il faut à la place utiliser HAVING.
Je suis bien embêté car je fais un système un peu dynamique en PHP, et j'ai besoin de mettre un alias aux colonnes, et je suis surtout obligé d'utiliser le nom de colonne renvoyé par MySQL et le réutiliser dans le HAVING.
Si quelqu'un a une slution ultime, je suis preneur.
Merci