8791 sujets

Développement web côté serveur, CMS

Bonjour à tous,

J'ai un petit soucis avec une table MySQL qui possède notamment trois champs, à savoir "activite", "nom", "prenom". Actuellement, je sors tous les résultats dans l'ordre alphabétiques de manière classique, avec un "ORDER BY x, x, x ASC". Le soucis est que les champs NULL sont placés en premier, ce que je ne souhaite pas. Aussi, je souhaite que les résultats des trois champs soient mélangés : Pas que tous les champs "activite" s'affiche par ordre croissant, puis "nom", puis "prenom".

Avez-vous la solution ?
Merci beaucoup.
Modifié par Gaylord.P (24 Jan 2010 - 09:29)
Pour exclure les champs NULL, il suffit d'ajouter une clause WHERE, comme suit :
WHERE activite IS NOT NULL AND nom IS NOT NULL AND prenom IS NOT NULL
Oui je sais merci. Mais le soucis est bien que les champs ne sont pas obligatoirement nuls, c'est aléatoire.
Hello,

Gaylord.P a écrit :
Le soucis est que les champs NULL sont placés en premier, ce que je ne souhaite pas.
Pas compris ce que tu souhaiterais à la place. Smiley murf

Gaylord.P a écrit :
Aussi, je souhaite que les résultats des trois champs soient mélangés : Pas que tous les champs "activite" s'affiche par ordre croissant, puis "nom", puis "prenom".
Pas compris non plus...
Sans avoir le schéma de ta DB, le type d'info qu'elle contient et le résultat que tu veux ça va être dur de te donner une réponse.

Exemple:

Table1
Id nom prénom
1 Toto Tata

Table2
Id IdNom appartement
1 1 Maison truc

Résultat attendu :
Toto Tata Maison truc
Désolé de ne pas avoir été très clair ; effectivement, si ça parait évidemment pour moi, créateur de la table, je suis conscient que ça puisse être incompréhensible pour d'autres. En fait, il s'agit d'une table gérant des clients. Les clients peuvent être des sociétés ou des particuliers.

La table possède [ en gros ] trois champs :
* activite
* nom
* prenom

Je souhaite liste la totalité des clients dans l'ordre alphabétique, exemple sur trois enregistrement :
* [activite = "Ma société"][nom = NULL][prenom = NULL]
* [activite = NULL][nom = martin][prenom = gilles]
* [activite = NULL][nom = dupont][prenom = françois]

La requête actuelle est : "ORDER BY activite, nom, prenom ASC"
Le résultat que je souhaiterais est : Dupont ; Ma société ; Gilles. Les trois champs sont donc triés donc par ordre alphabétiques. Le soucis actuel est que si "activite = NULL", ce champs est affiché dans les premiers résultats. Alors que c'est le nom qui devrait être pris en compte ... :s

En espérant avoir été un peu plus clair,
Encore merci,
Gaylord.P.
Re',

ce que tu demandes ne me semble pas possible en une requête. Quelque chose d'approchant :
SELECT * from matable where coalesce(activite, nom, prenom) is not null order by coalesce(activite, nom, prenom)