Bonjour, voici l'énoncé:
Récupérer la ligne la plus récente selon une valeur passée en paramètre. Je m'explique. La valeur passée en paramètre est 'TOTO'.
J'aimerais une requête qui me renvoie uniquement le TOTO, 18/12/2008. C'est-à-dire la plus récente.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 select nom, date from table where nom like 'TOTO'; Résultat: - TOTO, 12/12/2008 - TOTO, 15/12/2008 - TOTO, 18/12/2008
Voici ce que je propose:
Mais ça ne fonctionne pas et je n'ai aucun message d'erreur. J'ai une exécution qui semble infinie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Select nom, date from table table1 where date = ( Select max (date) from table table2 where table2.nom like table1.nom ) ;
Par contre, si j'écris:
J'obtiens bien un seul (et celui que je veux) TOTO, 18/12/2008.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Select nom, date from table table1 where date = ( Select max (date) from table table2 where table2.nom like 'TOTO' ) ; Résultat: - POPEYE, 01/01/2008 - PETUNA, 02/02/2008 - TOTO, 18/12/2008 - TINTIN, 04/05/2008
Je ne comprends pas ce qu'il se passe parce que ceci fonctionne très bien:
Merci de votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 select dummy from dual d1 where d1.dummy = ( select max(dummy) from dual d2 where d1.dummy like d2.dummy ) ;
Partager