je voudrais récuperer l'ensemble des données de la premiere table dont le statut est ouvert et les données les plus récentes de la deuxième table pour chaque enregistrement de la 1ere table
je lance ma requète :
SELECT table1* , table2.action FROM table1 LEFT OUTER JOIN table2 ON table1.idtable2.id AND date de l'action(Select MAX(date de l'action) From table2)
WHERE Table1.Statut ='Ouvert'
cette requete remonte bien l'ensemble de la table 1( excepter l'id3) mais uniquement l'action "2 / 02/01/2008 08:00/ contact" de ladeuxième table et pas l'action " 1 / 01/01/2008 12:00/ relance"
Quelqu'un a t il une idée pour recuperer ces données ?
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 7 févr. 2008 à 11:57
Salut,
c 'est normal ! puisque tu fais un regroupement dans la table2 et que tu ne prend que la date maximale 02/01/2008 , qui correspond au 2.
Essaies :
SELECT table1* , table2.action FROM table1 LEFT OUTER JOIN table2 ON table1.idtable2.id <strike>AND date de l'action(Select MAX(date de l'action) From table2)
</strike>WHERE Table1.Statut ='Ouvert'
<hr />
... Il y' en a même qui m' ont vu voler.
<hr />
pneau
Messages postés258Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention27 octobre 20105 7 févr. 2008 à 12:01
salut,
ton pb vient de la clause " date de l'action =(Select MAX(date de l'action) From table2) "
tu récupères toutes les données dont la date est églae à max(date action)
dans ton cas, Max(date action) = 02/01/2008
ce qui revient a écrire And Date de l'action = '02/01/2008'
tu n'as qu'un enreg qui correspond à ce critère.
pour n'avoir que l'élément le plus récent de chaque élément de table 1, j'essaierais ceci
SELECT table1.* ,
(Select Top 1 DateAction FROM Table2 Where Table1.ID = Table2.ID Order By DateAction Desc) as DateAction,
(Select Top 1 Action FROM Table2 Where Table1.ID = Table2.ID Order By DateAction Desc) as
Action
From Table1
WHERE Table1.Statut ='Ouvert'
Sur ce
@+
Pat
Don't Worry , Be Happy
<hr />
lorsque le problème est résolu, pensez Réponse Acceptée
Vous n’avez pas trouvé la réponse que vous recherchez ?
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 7 févr. 2008 à 13:22
Excuses moi mais tu veux toutes les occurences de tables2 dont
le statut est ouvert
1 / 01/01/2008 10:00/ contact
1 / 01/01/2008 12:00/ relance
2 / 02/01/2008 08:00/ contact
ou tu ne veux qu' une ?
Si tu les veux toutes, pas la peine d' imbriquer un 2 ième select.
SELECT table1* , table2.action
FROM table1 LEFT OUTER JOIN table2 ON table1.id= table2.id
WHERE Table1.Statut ='Ouvert'
suffira.
<hr />
... Il y' en a même qui m' ont vu voler.
<hr />