Bonjour à tous,
Avant de commencer voici quelques précisions :
- Version MySQL = MySQL 4.0.25
- MLD :
J'ai un petit problème sur une requête un peu compliqué. En fait, j'ai dans cette table une liste de numéro (qui peuvent apparaître plusieurs fois).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Table lignes { id int(11), primary key numero int(10) heure int(11) etat int(2) }
J'aimerai lister ces numéro tout en les triant par etat. Le problème c'est que je ne veut afficher dans cette liste que les 30 premiers numéros par ordre d'état mais sans les faire apparaitre plusieurs fois. En cas d'existence d'un doublon, il faut que ça soit celui qui a l'heure la plus grande, mais que cela ne perturbe pas le nombre d'éléments.
Je ne sais pas si j'ai été assez clair, alors voici une présentation plus "technique".
- Listage des numéros (une seule fois) en triant par état avec une limite à 30 :
Cette requête ne correspond pas tout à fait, parce qu'elle ne tient pas compte du champ de l'heure en cas d'existence de doublon pour un numero
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT DISTINCT `numero` FROM `lignes` ORDER BY `etat` ASC, `numero` ASC LIMIT 30;
Alors j'ai pensé à une requête imbriqué :
Cette requête a deux problèmes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT DISTINCT `numero` FROM `lignes` WHERE `id` = (SELECT `id` FROM `ligne` WHERE `numero` = ????? ORDER BY `heure` DESC LIMIT 1) ORDER BY `etat` ASC, `numero` ASC LIMIT 30;
- Je ne sais pas quoi mettre à la place de "?????"
- Les requêtes imbriqués ne sont pas disponibles avec cette version de mysql
Si quelqu'un pouvait m'aider à résoudre ce problème, ça serait vraiment cool.
Merci d'avance.
Partager