Bonjour,
mysql> describe fichiers;
+-------------+--------------+------+-----+------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+------------+----------------+
| cle | int(11) | NO | PRI | NULL | auto_increment |
| nom | varchar(128) | NO | | | |
| commentaire | text | YES | | NULL | |
| vIntegrees | int(11) | NO | | 0 | |
| date | date | NO | | 0000-00-00 | |
| Poste | char(1) | NO | | D | |
+-------------+--------------+------+-----+------------+----------------+
6 rows in set (0.02 sec) |
- Le champ `Poste` vaut soit 'D' soit 'I'
- Le champ `vIntegrees` >= -1
Je souhaite afficher l'ensemble des enregistrements du même poste 'D' pour chaque jour où au moins un d'entre eux a une valeur `vIntegrees`>-1.
Voici la requête que j'ai fait et qui fonctionne :
SELECT DISTINCT t1.cle, DATE_FORMAT(t1.date, "%d/%m/%y" ) as dateF, t1.nom, t1.vIntegrees, t1.commentaire FROM fichiers t1, fichiers t2 WHERE t1.Poste='D' AND t2.Poste='D' AND t1.date=t2.date AND (t1.vIntegrees > -1 OR t2.vIntegrees > -1) ORDER BY t1.date DESC, t1.nom |
Un exemple de résultat :
Le soucis, c'est que cette requête met plus de 8 secondes à être traitée (ma table contient 4229 enregistrements pour 700Ko, et elle va encore gonfler avec le temps).
Je n'arrive pas à trouver une autre requête qui fonctionne et qui soit plus rapide. Pourtant, je suis sur que c'est possible (peut-être avec un "WHERE (SELECT..." ou un "HAVING" ), mais cela dépasse mes compétences ...
Si quelqu'un pouvait m'aider ... merci bien par avance !!!
Message édité par mv1 le 25-09-2009 à 14:14:57