Page 1 sur 1

order by et nom de domaine d'email

Posté : 17 nov. 2007, 10:57
par pierre
Bonjour,

je m'interroge sur la faisabilité d'une requête Mysql de ce style (la syntaxe est fausse là)
$req_mail=mysql_query("select id_mail from tbl_mail where id_mail!="" order by strstr('id_mail', '@')",$db_link);
en fait le but de la requête est donc d'aller chercher des emails dans une base et de les ramener en les classant par nom de domaine

exemple de sortie voulue:
etc...

En fait je ne trouve pas la bonne syntaxe pour faire cela juste en une requête dans le style ci-dessus

En remerciant celui ou celle qui aura une idée pour m'aider à résoudre ce petit pb...

et bonne journée à tous

Posté : 17 nov. 2007, 14:33
par Truc
strstr n'est pas du SQL

Code : Tout sélectionner

SELECT id_mail, SUBSTRING_INDEX(id_mail, '@',-1) as o FROM tbl_mail where id_mail!="" ORDER BY o
Devrait faire l'affaire

Posté : 17 nov. 2007, 14:41
par Sékiltoyai
Utilise ORDER BY FIELD(mail1, mail2, …)

Posté : 17 nov. 2007, 15:03
par pierre
merci à vous 2

je ne comprends pas bien le code de Truc (je vais chercher et comprendre) mais en tout cas ça marche nickel

Encore merci

Posté : 17 nov. 2007, 21:17
par Cyrano
je ne comprends pas bien le code de Truc
C'est en fin de compte assez simple : il utilise une fonction intégrée dans MySQL pour extraire une partie d'une chaine avec SUBSTRING_INDEX()

Cette fonction attend comme tu peux le voir trois paramètres :
  1. La colonne à traiter, donc ici la colonne `id_mail`;
  2. Un point de repère à trouver dans cette chaine, ici le '@';
  3. Enfin à partir de quel point, ici '-1', donc négatif, signifie qu'on part du point de repère trouvé jusqu'à la fin. Avec un paramètre positif, ça aurait été le nombre de caractères précédant le point de repère '@'.
Jette un coup d'œil dans la doc sur ce point

Posté : 18 nov. 2007, 01:40
par pierre
merci beaucoup pour l'explication plus claire je trouve que sur la doc que j'avais déjà survolé et qui m'avait paru peu explicite

un grand merci