Select max

Résolu
Barsy Messages postés 13 Date d'inscription dimanche 8 mai 2005 Statut Membre Dernière intervention 12 février 2008 - 8 févr. 2008 à 11:44
Barsy Messages postés 13 Date d'inscription dimanche 8 mai 2005 Statut Membre Dernière intervention 12 février 2008 - 12 févr. 2008 à 11:08
Bonjour

J'ai un soucis de requete,

J'ai deux table de type

table1
----
tab1_Id
tab2_Id
date1
date2

table2
----
tab2_Id

la clé primaire de table2 est une clé secondaire de table1

ce que j'essaie d'obtenir, c'est la valeur max de date1 ainsi que la date2 deux associé à la valeur max de date1 pour chaque ligne de table2

j'ai tenté une requete du style :
SELECT
    table2.tab2_Id
    MAX(table1.date1) AS madate  
    table1.date2
FROM
    table2
    INNER JOIN table1 IN table2.tab2_Id = table1.tab1_Id
GROUP BY table2.tab2_Id, table1.date2
HAVING MAX(madate) = madate

Sans le "HAVING", il me retourne toutes les date1 sur plusieurs ligne et avec il me retourne une erreur comme quoi il ne reconnait pas "madate"
A voir également:

2 réponses

Barsy Messages postés 13 Date d'inscription dimanche 8 mai 2005 Statut Membre Dernière intervention 12 février 2008
12 févr. 2008 à 11:08
Ta solution ne marche pas :

Il ne reconnait pas la table T1 dans le second Select (apparement les éléments déclarés dans un select fonctionnent en local à l'intérieur du select)

Après moultes recherches, j'ai enfin trouvé la solution :

SELECT Table2.tab2_Id
MAX(T1.Date1) AS madate1,
(SELECT T2.Date2 Table1 T2
WHERE Table2.Tab2_Id = T2.Tab2_Id
AND
T2.Tab2_Id = T1.Tab2_Id
AND
MAX(T1.Date1) = T2.Date1
GROUP BY Date2
) AS madate2
FROM
Table2
LEFT JOIN Table1 T1 ON Table2.Tab2_Id = T1.Tab2_Id
GROUP BY Table2.Tab2_Id, T1.Tab2_Id

Il ne faut surtout pas oublier le GROUP BY à la fin de chaque select.

Je te remercie tout de même pour ta réponse pneau, elle m'a mis sur la voie.
3
pneau Messages postés 258 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 27 octobre 2010 5
8 févr. 2008 à 14:00
salut,
essai ceci
Select Table2.tab2_Id,
(Select Max(Date1) From Table1 as T1 Where T1.Tab2_id = Table2.tab2_id) as MaDate1,(Select date2 from table1 as t2 Where T2.Tab2_ID Table2.tab2_id And t2.Tab1_ID t1.Tab1_ID) as MaDate1
From Table2

@+

Pat

 Don't Worry , Be Happy

<hr />lorsque le problème est résolu, pensez Réponse Acceptée
0
Rejoignez-nous