Utilisation de Limit dans une sous-requête

Eléphant du PHP | 88 Messages

06 avr. 2007, 11:45

Bonjour,
voici mon problème : j'ai une table de facture qui pour une facture et un fournisseur donnée me donne un statut et une date de déblocage.

Seulement, il arrive que une facture change de statut. Dans le cadre d'un chargement dans une nouvelle base de données, je voudrais ne conserver que le dernier style.

Voici ce que j'ai essayé :

Code : Tout sélectionner

SELECT DISTINCT TB10.NUMFACT, TB10.FOURARCOLE, TB10.STATUT, TB10.DATEDEBLOCAGE FROM HISTOFACTURES AS TB10 WHERE DATEDEBLOCAGE IN ( SELECT DATEDEBLOCAGE FROM HISTOFACTURES WHERE NUMFACT=TB10.NUMFACT AND FOURARCOLE = TB10.FOURARCOLE ORDER BY NUMFACT, FOURARCOLE, DATEDEBLOCAGE DESC LIMIT 1 );
Seulement, ma version de mysql, me renvoie le message suivant :
[MySQL][ODBC 3.51 Driver][mysqld-4.1.11-nt]This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
Avez vous une idée pour modifier ma requête car il me semble difficile de changer de version de MYSQL?

Merci d'avance! Mickaël

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

06 avr. 2007, 14:41

Si tu tries ta requête par date décroissante en te limitant à la première, je suppose que c'est donc la date la plus récente qui t'interesse, donc la date max ? :)

Code : Tout sélectionner

IN ( SELECT MAX(DATEDEBLOCAGE) FROM HISTOFACTURES WHERE NUMFACT=TB10.NUMFACT AND FOURARCOLE = TB10.FOURARCOLE )
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 88 Messages

06 avr. 2007, 15:50

Merci!
effectivement je n'avais pas pensé à aussi simple! Comme quoi le fait de ne pas être la tête dedans te permet de réfléchir plus librement!

Pour information, j'ai utilisé une table intermédiaire dans SQL Server qui charge toute ma table MYSQL et ensuite j'utilise ma requête avec un TOP 1 pour charger ma table dans ma base SQL Server.