Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2863 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Problème de tri d'enregistrements

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de tri d'enregistrements

n°2146384
rufo
Pas me confondre avec Lycos!
Posté le 19-06-2012 à 10:37:50  profilanswer
 

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
mood
Publicité
Posté le 19-06-2012 à 10:37:50  profilanswer
 

n°2146507
Oliiii
Posté le 20-06-2012 à 07:49:39  profilanswer
 

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.

n°2146508
Oliiii
Posté le 20-06-2012 à 08:01:55  profilanswer
 

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 :
  1. SELECT a.ActionTitle, MIN(c.SupportMemberLastName), MAX(c.SupportMemberLastName)
  2. FROM @Actions a
  3.     JOIN @ActionHistory b ON b.ActionID = a.ActionID
  4.     JOIN @SupportMembers c ON c.SupportMemberID = b.SupportMemberID
  5. GROUP BY a.ActionTitle
  6. ORDER BY MIN(c.SupportMemberLastName), MAX(c.SupportMemberLastName)

n°2146517
rufo
Pas me confondre avec Lycos!
Posté le 20-06-2012 à 09:58:43  profilanswer
 

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 ;)


---------------
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
n°2146622
vave
Nice to meet me
Posté le 21-06-2012 à 08:48:43  profilanswer
 

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


Message édité par vave le 21-06-2012 à 08:49:09

---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
n°2146744
rufo
Pas me confondre avec Lycos!
Posté le 22-06-2012 à 11:00:48  profilanswer
 

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)...


---------------
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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Problème de tri d'enregistrements

 

Sujets relatifs
Problème d'espacement avec IE7[Résolu] Problème privilège oracle
ressortir les enregistrements les plus proche d'une dateproblème attributs
probleme reponse a l'excecution d'une commande par codeProblème select Max
[BATCH] xcopy problème avec /D sur réseauProblème avec nombre d'enregistrements dans une table
Problème d'affichage des enregistrements dans un DataReport VB6SQL Server : récupérer les enregistrements n à m, problème
Plus de sujets relatifs à : Problème de tri d'enregistrements


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR