[MySQL] Aide sur une requète

Aide sur une requète [MySQL] - SQL/NoSQL - Programmation

Marsh Posté le 17-01-2004 à 14:24:58    

Bonjour,
 
voilà, j'ai la requête suivante :

Citation :

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 :heink:  
 
bref, si quelqu'un à une idée, je suis preneur :hello:  
A+
Gurney


Message édité par Gurney_Halleck le 17-01-2004 à 18:32:25
Reply

Marsh Posté le 17-01-2004 à 14:24:58   

Reply

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)

Reply

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 ?

Reply

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 ??


---------------
On ne vit qu'une fois, mais pour qui sait vivre, une seule fois suffit (Merril Stubbing)
Reply

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

Reply

Marsh Posté le 08-02-2004 à 21:15:05    

Merci beaucoup, avec du retard :)
 
ça marche parfaitement !

Reply

Marsh Posté le 08-02-2004 à 22:31:17    

yes ca c'est du retard si je puis me permettre :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed