resultats etranges avec mysql et la clause Having

resultats etranges avec mysql et la clause Having - SQL/NoSQL - Programmation

Marsh Posté le 24-03-2004 à 20:21:42    

voila mon probleme,
 
j'ai une requete du type
 
Select table1.champ1, table1.champ2, table1.champ3
From table1, table2
Where table1.champ1 = table2.champ1
AND table 1.champ2 = table2.champ1
group by table1.champ2
Having table1.champ3 = max(table1.champ3);
 
qui me ressort par exemple 20 occurences
 
la meme avec un critere en moins  
 
Select table1.champ1, table1.champ2, table1.champ3
From table1, table2
Where table1.champ1 = table2.champ1
group by table1.champ2
Having table1.champ3 = max(table1.champ3);
 
m'en ressort que 19
 
par contre si je remplace le having par un select max comme ci dessous je n'ai plus le pbl  
 
Select table1.champ1, table1.champ2, max(table1.champ3)
From table1, table2
Where table1.champ1 = table2.champ1
group by table1.champ2;
 
Si vous avez deja eu ce genre de pbl je suis prenneur d'info car la c'est vraiment etrange

Reply

Marsh Posté le 24-03-2004 à 20:21:42   

Reply

Marsh Posté le 24-03-2004 à 21:26:21    

Ca me surprend qu'il accepte le "max" dans le HAVING [:figti]  :ouch:

Reply

Marsh Posté le 25-03-2004 à 15:04:25    

moi aussi, ca me surprend ;)
 
par contre, il y a probablement une erreur dans ton critère de jointure du premier select :

Code :
  1. AND table1.champ2 = table2.champ1


ca devrait être plutôt:

Code :
  1. AND table1.champ2 = table2.champ2


Message édité par Agagax le 25-03-2004 à 15:05:11
Reply

Marsh Posté le 02-04-2004 à 10:53:12    

pour le max ds le having c'est normal sql serveur fait pareil.
A mon avis le max dans le having et groupé selon ton champ ce qui en donne plusieurs tandis que dans le select il prend il max de toute les sélections.

Reply

Sujets relatifs:

Leave a Replay

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