Requête SQL: Classer des noms par ordre alphabétique et par catégorie
Pixar
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour, j'ai une liste de noms classés par ordre alphabétique et j'aimerais parmi ces noms afficher d'abord (toujours par ordre alphabétique) ceux appartenant à la catégorie "Commercial". Mais je n'y arrive pas.
Voici ma requête:
Je note que la requête fonctionne mais le SELECT entre parenthèse ne fait aucun effet.
Voici ma requête:
$MaRequete = "SELECT user_id AS UID, user_nom, user_prenom, (SELECT contact_client_service FROM crm_clients_contacts WHERE contact_client_service = 'Commercial' ORDER BY contact_client_service) FROM crm_users WHERE user_id != '4' AND user_etat=0 ORDER BY user_nom,user_prenom";
Je note que la requête fonctionne mais le SELECT entre parenthèse ne fait aucun effet.
Configuration: Macintosh / Chrome 70.0.3538.102
A voir également:
- Trier ordre alphabétique sql
- Comment trier par ordre alphabétique sur excel - Guide
- Triez ce tableau par ordre alphabétique des prénoms. - Forum LibreOffice / OpenOffice
- Triez cette liste par ordre alphabétique des villes et par note de la meilleure à la moins bonne. quel mot est formé par les 8 premières lettres de la colonne code ? ✓ - Forum Excel
- Trier un tableau en ordre alphabétique - Forum Excel
- Triez ce tableau par ordre alphabétique des prénoms ✓ - Forum Excel
3 réponses
Bonjour
Pour mettre la catégorie 'commercial' en premier, il te faut une fonction qui rend (par exemple) 1 pour la catégorie commercial et 2 pour les autres, et utiliser cette fonction en premier critère de tri.
La fonction est très simple en MySQL :
Tu n'as qu'à l'insérer en premier critère de ton ORDER BY :
En ce qui concerne ton SELECT entre parenthèses, je suppose que tu avais en fait besoin d'une jointure, mais sans plus de précision je ne devine pas laquelle.
Pour mettre la catégorie 'commercial' en premier, il te faut une fonction qui rend (par exemple) 1 pour la catégorie commercial et 2 pour les autres, et utiliser cette fonction en premier critère de tri.
La fonction est très simple en MySQL :
IF (contact_client_service = 'Commercial',1,2).
Tu n'as qu'à l'insérer en premier critère de ton ORDER BY :
SELECT user_id AS UID, user_nom, user_prenom, contact_client_service FROM crm_users WHERE user_id != '4' AND user_etat=0 ORDER BY IF (contact_client_service = 'Commercial',1,2), user_nom,user_prenom
En ce qui concerne ton SELECT entre parenthèses, je suppose que tu avais en fait besoin d'une jointure, mais sans plus de précision je ne devine pas laquelle.
Comment récupérer donc cette table sans que cela m'affiche plusieurs fois le même nom.
J'ai fait:
Ca m'affiche tout sans tenir compte de la condition et 300 fois.
D'après ton SELECT entre parenthèses, ce serait TOUJOURS 'Commercial' :
Ça ne peut donner que 'Commercial', et je doute que ce soit ce que tu veux.