Problème de tri d'enregistrements - SQL/NoSQL - Programmation
Marsh Posté le 20-06-2012 à 07:49:39
Le probleme c'est qu'un SGBD normal est fait pour comparer des colonnes avec des colonnes, ici tu compares des rows aussi.
En gros, faire ce que tu veux avec juste un seul nom c'est facil, le faire avec un order by nom1, nom2, nomx... c'est moins marrant
Il y a moyen (du moins en SQL Server) en fesant une premiere query qui assemble tout les noms et une deuxieme qui fait le order by mais ce n'est ni performant ni elegant
A mon avis le plus facil c'est de faire ce genre de tri dans l'appli.
Marsh Posté le 20-06-2012 à 08:01:55
Sinon ya ca comme "solution", ca ne donne pas toujours ce que tu veux mais c'est un moyen de s'en raporcher sans trop se casser la tete:
Code :
|
Marsh Posté le 20-06-2012 à 09:58:43
Merci pour ta réponse. Entre temps, j'ai trouvé une solution mais j'ai laissé le topic ouvert pour voir les propositions faites. La tienne se rapproche beaucoup de ma solution (utilisation de min ou max sur SupportMemberLastName). Sauf que comme j'avais d'autres clauses dans le where, notamment concernant d'autres champs de l'historique ActionHistory (j'avais simplifié le pb lors de mon exposition), j'ai mis la requête que tu proposes dans une sous-requête pour que la table ActionHistory servant au filtrage d'actions à afficher ne "pollue" pas son utilisation dans la clause order by. Par contre, pour le group by, je l'ai fait sur ActionID et non ActionTitle, certaines actions pouvant avoir le même titre...
Mais merci encore pour ta solution qui a confirmé que la mienne n'était pas débile
Marsh Posté le 21-06-2012 à 08:48:43
Tu peux peut-être utiliser la récursion pour dans un premier temps, trier par action / nom et ensuite assembler les X noms ensemble.
Je l'ai déjà fait sur une base en db2, ça fonctionne. Je ne sais pas si c'est possible en MySql par contre.
http://sqlpro.developpez.com/cours [...] ves/#LIV-D
Marsh Posté le 22-06-2012 à 11:00:48
Si je comprend ton idée, je pense que ça revient à faire une sous-requête comme Oliiii l'a proposé (et ce que j'ai fait également)...
Marsh Posté le 19-06-2012 à 10:37:50
Bonjour,
Voilà, j'ai un pb de tri pour une requête sql concernant un BD Mysql. J'ai 3 tables :
Actions (ActionID, ActionTitle...)
ActionHistory (ActionHistoryID, ActionID, SupportMemberID...)
SupportMembers (SupportMemberID, SupportMemberLastname...)
En gros, j'ai une table contenant des actions pouvant être affectées à 0, 1 ou plusieurs personnes d'une équipe (0 = action pas encore affectée). Pour info, la table SupportMembers sert dans d'autres tables, raison pour laquelle on ne trouve pas en clé étrangère ActionID dans cette table.
Mon pb est le suivant : je voudrais trier les actions dans l'ordre alphabétique croissant/décroissant de leur personnes affectées.
Ex :
A1 affectée à Titi et Tata
A2 affectée à Tutu et Lala
A3 affectée à Lala
En sortie, je devrais avoir :
A3 (car Lala)
A2 (car Lala, Tutu)
A1 (car Tata, Titi)
Ca paraît simple, mais je sèche...
---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta