Tri alphanumerique
Résolu
ziad251
Messages postés
34
Date d'inscription
Statut
Membre
Dernière intervention
-
Viny33 -
Viny33 -
Bonjour,
jai un ptt prob , je veux trier une colonne de ma requete sql , elle est de genre (1/2008, 2/2008 ,.... ,11/2008,12/2008)
avec order by jai 1/2008 - 11/2008 - 2/2008 , c qui nest pas evident biensur , si qq un a une solution merci
jai un ptt prob , je veux trier une colonne de ma requete sql , elle est de genre (1/2008, 2/2008 ,.... ,11/2008,12/2008)
avec order by jai 1/2008 - 11/2008 - 2/2008 , c qui nest pas evident biensur , si qq un a une solution merci
A voir également:
- Tri alphanumerique
- Comment faire un tri personnalisé sur excel - Guide
- Logiciel tri photo - Guide
- Clavier alphanumérique iphone - Guide
- Adresse alphanumérique exemple - Forum Windows
- Code alphanumérique exemple - Guide
10 réponses
Pas de soucis,
Quand tu envoie une réponse finale, n'oublie pas de cocher la case 'problème résolu' en bas de la zone de message !
a+
Quand tu envoie une réponse finale, n'oublie pas de cocher la case 'problème résolu' en bas de la zone de message !
a+
salut tout le monde, j'ai un petit soucie concernant php/mysql
j'ai une liste qui contient des langues (arabe, francais, allemand, italien, ...) dont je poeux séléctionner plusieur langues en meme temps, et puis avec un bouton "Valider" , les langues que j'ai choisi doivent etre insérés dans un champ MySQL, j'éspère que c'est claire jusqu'à là !!
alors ma question c'est comment pourrai je insérer plusieur valeurs (Langues) en meme temps dans un seul champ MySQL ?
et quel est le type de champs que je dois utilisé (SET, BLOB, VARCHAR, ....)
merci infiniment
j'ai une liste qui contient des langues (arabe, francais, allemand, italien, ...) dont je poeux séléctionner plusieur langues en meme temps, et puis avec un bouton "Valider" , les langues que j'ai choisi doivent etre insérés dans un champ MySQL, j'éspère que c'est claire jusqu'à là !!
alors ma question c'est comment pourrai je insérer plusieur valeurs (Langues) en meme temps dans un seul champ MySQL ?
et quel est le type de champs que je dois utilisé (SET, BLOB, VARCHAR, ....)
merci infiniment
ca reste tjs un prob si j atteint 100/2008 , alors il me faut un tri alphanumerique ,
merci de ta reponse
merci de ta reponse
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Plusieurs cas de figure :
1 - Tu as besoin de cette liste, classée, dans ta requête, pour pouvoir enchaîner une deuxiême requête : dans ce cas à mon avis tu es baisé, car ta chaine est alphanumérique (vu qu'elle contient des '/') et qu'un classement alpha te donnera toujours 1, 11, 2, 22, 3 etc... c'est le principe même.
|_ Si tu veux absolument implémenter ces 'codes' en alphanumériques mais les classer en numérique deux solutions :
|_ 1 - Dès la conception, tu prévois ce problème quand tu decide de la signature de tes 'codes' pour ne pas être emmerdé lors du classement.
|_ 2 - La solution la plus Intelligente et 3NF a mon avis, si tes codes ne sont pas alphanumériques, alors ils sont multivalués, tu te dois donc de les 'éclater' quand tu les intègre dans ton modèle de table : exemple un code qui est '100/2008' peut se découper de cette façon 'référence=100', 'année de fabrication=2008'. Donc au lieu de stocker le code 100/2008 en 'dur' dans ta table dans une seule colonne 'code' , tu crée deux colonnes (par exemple) 'code_ref' et 'code_annee'. De cette façon tu peux beaucoup mieux typer les données, 'ref' est un 'INT' et 'annee' est un 'DATE'. Ensuite il t'appartiendra de récupérer chaque 'morceau' de 'code' avec des requêtes, et de concaténer les collones à l'affichage pour obtenir un '100/2008' au lieu de 'ref=100' 'annee=2008'
2 - Cette liste de 'codes' est un résultat final à afficher ou a utiliser : dans ce cas tu récupère cette liste mal classée sous forme de tableau, et tu écris toi même une fonction en php pour pouvoir reclasser ces données selon tes goûts, et ensuite seulement tu aura une liste bien classée. C'est ce qu'on fait le plus souvent quand on est pressé et qu'on ne peut pas bien normaliser la base pour diverses raisons.
1 - Tu as besoin de cette liste, classée, dans ta requête, pour pouvoir enchaîner une deuxiême requête : dans ce cas à mon avis tu es baisé, car ta chaine est alphanumérique (vu qu'elle contient des '/') et qu'un classement alpha te donnera toujours 1, 11, 2, 22, 3 etc... c'est le principe même.
|_ Si tu veux absolument implémenter ces 'codes' en alphanumériques mais les classer en numérique deux solutions :
|_ 1 - Dès la conception, tu prévois ce problème quand tu decide de la signature de tes 'codes' pour ne pas être emmerdé lors du classement.
|_ 2 - La solution la plus Intelligente et 3NF a mon avis, si tes codes ne sont pas alphanumériques, alors ils sont multivalués, tu te dois donc de les 'éclater' quand tu les intègre dans ton modèle de table : exemple un code qui est '100/2008' peut se découper de cette façon 'référence=100', 'année de fabrication=2008'. Donc au lieu de stocker le code 100/2008 en 'dur' dans ta table dans une seule colonne 'code' , tu crée deux colonnes (par exemple) 'code_ref' et 'code_annee'. De cette façon tu peux beaucoup mieux typer les données, 'ref' est un 'INT' et 'annee' est un 'DATE'. Ensuite il t'appartiendra de récupérer chaque 'morceau' de 'code' avec des requêtes, et de concaténer les collones à l'affichage pour obtenir un '100/2008' au lieu de 'ref=100' 'annee=2008'
2 - Cette liste de 'codes' est un résultat final à afficher ou a utiliser : dans ce cas tu récupère cette liste mal classée sous forme de tableau, et tu écris toi même une fonction en php pour pouvoir reclasser ces données selon tes goûts, et ensuite seulement tu aura une liste bien classée. C'est ce qu'on fait le plus souvent quand on est pressé et qu'on ne peut pas bien normaliser la base pour diverses raisons.
Tu peux compléter par des zéro à gauche et ensuite ne prendre que la partie de droite.
Exemple
champs CODE contenant '10', '11', '100', '101', etc.
Si tu tries en direct, tu auras
'10'
'100'
'101'
'11'
En faisant right('000000'+CODE,6) donnera
'000010', '000011', '000100', et '000101'
... donc en triant "ORDER BY 1 (l'ordre de SELECT), tu auras
'000010'
'000011'
'000100'
'000101'
SELECT right('000000'+CODE,6), CODE, etc.
FROM ...
ORDER BY 1
Voiloù
J'espère que depuis le temps tu as trouvé la réponse mais c'est pour le cas où quelqu'un chercherait aujourd'hui :-)
Exemple
champs CODE contenant '10', '11', '100', '101', etc.
Si tu tries en direct, tu auras
'10'
'100'
'101'
'11'
En faisant right('000000'+CODE,6) donnera
'000010', '000011', '000100', et '000101'
... donc en triant "ORDER BY 1 (l'ordre de SELECT), tu auras
'000010'
'000011'
'000100'
'000101'
SELECT right('000000'+CODE,6), CODE, etc.
FROM ...
ORDER BY 1
Voiloù
J'espère que depuis le temps tu as trouvé la réponse mais c'est pour le cas où quelqu'un chercherait aujourd'hui :-)
Je n'ai pas la réponse, mais si tu as la main sur la base, tu devrais corriger le problème qui est conceptuel, le champ que tu cherche a ordonner n'est manifestement pas de type date, et pourtant il devrait l'être.
D'après ma connaissance en sql, il faudrait te coder une moulinette, pour classer tout ça après l'avoir récupéré.
Quel est le type de serveur sql utilisé ? et dans quel language sont intégrées tes requêtes (php? java? ...?)
D'après ma connaissance en sql, il faudrait te coder une moulinette, pour classer tout ça après l'avoir récupéré.
Quel est le type de serveur sql utilisé ? et dans quel language sont intégrées tes requêtes (php? java? ...?)