Order un peu spécial..

syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 - 17 oct. 2005 à 14:46
cs_fabrice69 Messages postés 1765 Date d'inscription jeudi 12 octobre 2000 Statut Membre Dernière intervention 11 décembre 2013 - 18 oct. 2005 à 09:51
Bonjour,

J'ai une table avec deux colonnes (pour un select *), mais la second
colonne contient 'titi','toto' et 'tata' et je souhaite d'abord les
'titi' puis les 'toto' et les 'tata' en une seule requete...

tout cela sous Access..

Merci de votre aide car je tourne en rond depuis 2 heures.



S.

4 réponses

aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
17 oct. 2005 à 15:20
salut

test ceci, je pense que ca peut fonctionner :

SELECT * FROM matable WHERE champs2 = 'titi'
UNION
SELECT * FROM matable WHERE champs2 = 'toto'
UNION
SELECT * FROM maTable WHERE champs3 = 'tata'
0
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
17 oct. 2005 à 15:28
bonjour,

Je te remercie de ta réponse, mais je suis sur qu'il y a une solution
avec le 'order' je l'ai fait il y a une petite dizaine d'année sous
Access 2 mais il m'est impossible de retrouver la syntaxe précise..

S.
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
17 oct. 2005 à 22:03
Salut

Cela ne semble pas possible.
Il n'y a pas d'ordrelogique

Peut etre avec les types utilisateurs (pas sur)
ou une colonne numerotés ca fonctionnera sans les unions

Car cela n'a pas d'interets
pour les accents il y a les collations
pour savoir si les
é doivent etre mis avant les e ou intercallés.

http://sqlpro.developpez.com/cours/sqlserver/collations/
pour plus de renseignements
0
cs_fabrice69 Messages postés 1765 Date d'inscription jeudi 12 octobre 2000 Statut Membre Dernière intervention 11 décembre 2013 5
18 oct. 2005 à 09:51
Bonjour,
Pour information, la clause ORDER BY effectue un trie par ordre alphabetique ou numérique. Dans ton cas, le classement recherché n'a rien de natif (puisque I doit être avant O qui est avant A).
Il aurait fallut prévoir cela avant de faire cette requette en utilisant une table de référence avec les pondération.

Tu peu rattraper le coup en faisant toi même cette table de pondération (2 champs : text et int) avec par exemple :
titi | 1
toto | 2
tata | 3

Ainsi tu fais ta requette en ajoutant un INNER JOIN entre ta table d'origine et ta table de pondération et classant par le poids.

Ce n'est pas le plus propre mais au moins ca marche et ca évite les requête pouvant tuer les performances du serveur (2 UNION successif).

Romelard Fabrice (Alias F___)
0
Rejoignez-nous