Aide sur une requète [MySQL] - SQL/NoSQL - Programmation
Marsh Posté le 17-01-2004 à 18:27:04
attention aux fonctions d'aggréations dans tes jointures. si tu as 3 tables, tu devras avoir 2 jointures (ce qui n'est pas le cas ici)
Marsh Posté le 17-01-2004 à 18:33:46
Mais là, je n'appelle que 2 tables (films et liens)
je dois quand même joindre la troisième ?
Marsh Posté le 19-01-2004 à 10:58:29
vire le where l.cd = 1 et mets en fin de requête having max(l.cd) = 1 ??
Marsh Posté le 19-01-2004 à 19:35:49
bill.fr a écrit : vire le where l.cd = 1 et mets en fin de requête having max(l.cd) = 1 ?? |
voilà
On peut voir le HAVING comme un WHERE s'exécutant après le GROUP BY, juste avant l'envoi des données. Il veut mieux l'éviter quand on peut (WHERE est souvent plus performant que HAVING), mais il est utile dans ce cas.
On peut aussi utiliser la colonne renommée :
SELECT f.id, f.titre, MAX(l.cd) AS max_cd, ...
...
HAVING max_cd = 1
Marsh Posté le 17-01-2004 à 14:24:58
Bonjour,
voilà, j'ai la requête suivante :
SELECT f.id,f.titre,MAX(l.cd),MAX(l.dd),MAX(l.dvd) FROM films f LEFT JOIN liens l ON f.id=l.film WHERE l.cd=1 GROUP BY l.film ORDER BY f.titre ASC LIMIT 0,20
J'ai 2 tables, films et liens. Cette dernière sert à enregistrer les liens entre la table films, et une troisième table.
Mon problème concerne la partie en gras.
Ce que je voudrais faire, exactement, c'est sélectionner tous les enregistrements dont le champs MAX(l.cd) est égal à 1.
J'ai essayer de faire un WHERE MAX(l.cd)=1 mais ça marche pas
le WHERE l.cd=1 me retourne tous les enregistrements où l.cd=0
bref, si quelqu'un à une idée, je suis preneur
A+
Gurney
Message édité par Gurney_Halleck le 17-01-2004 à 18:32:25