[MySQL] REGEXP dans un ORDER BY

REGEXP dans un ORDER BY [MySQL] - SQL/NoSQL - Programmation

Marsh Posté le 23-08-2007 à 10:50:00    

Bonjour !
 
      Je viens de tester les expressions régulières avec MySQL 4.1
Ça semble fonctionner, mais je me demande s'il est possible de les utiliser sur le ORDER BY ?
 
En fait j'ai une table avec des factures et des avoirs, les factures commencent par F (genre F000257)  
et les avoirs commencent par A (genre A000001), il y a toujours 6 chiffres après la lettre.
Un avoir est créé avec les chiffres de la facture à laquelle il correspond.
 
Mon but est d'afficher factures et avoirs dans un tableau  
de manière à ce que un avoir apparaisse juste sous sa facture :
F000001
F000002
A000002
F000003
 
Par défaut, tous les avoirs sont rangés en premier (car ils commencent par A) :
A000002
F000001
F000002
F000003
 
 
J'ai essayé sans succès des requêtes comme celle-ci :
 
SELECT *
FROM factures
ORDER BY N_FACTURE REGEXP "^[AF][0-9]{6}"
 
mais il y manque clairement qqch qui dirait qu'il doit ignorer A ou F
je ne vois pas comment le faire :(  
 
 
si qqun a une idée :jap:


Message édité par sire de Botcor le 23-08-2007 à 10:56:09

---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 23-08-2007 à 10:50:00   

Reply

Marsh Posté le 23-08-2007 à 10:56:39    

J'ai trouvé !!
Si ça peut aider qqun, il n'y a en fait pas besoin d'utiliser les regexp :
 
SELECT *
FROM factures
ORDER BY SUBSTRING( N_FACTURE, 2, 6 )


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 23-08-2007 à 11:02:16    

j'aurais ajouter une deuxieme clause sur l'order avec un substring 1,1 en desc, car là (sans connaitre les indexs) il n'y a pas de raisons que F apparaisse avant A ( et donc que tes factures soient avant tes avoirs)

Reply

Marsh Posté le 23-08-2007 à 11:20:12    

anapajari a écrit :

j'aurais ajouter une deuxieme clause sur l'order avec un substring 1,1 en desc, car là (sans connaitre les indexs) il n'y a pas de raisons que F apparaisse avant A ( et donc que tes factures soient avant tes avoirs)


exact, je l'ai d'ailleurs fait aussi ;)  :jap:
 
SELECT *
FROM factures  
ORDER BY SUBSTRING(N_FACTURE, 2, 6) ASC, SUBSTRING(N_FACTURE, 1, 1) DESC


Message édité par sire de Botcor le 23-08-2007 à 11:21:22

---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed