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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Regroupement et Tri : cas particuler

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Regroupement et Tri : cas particuler

n°1722730
zeOffsprin​g
Posté le 23-04-2008 à 12:39:18  profilanswer
 

Bonjour à tous,
 
J'ai une question en rapport avec le regroupement et le tri.
J'ai 2 tables : 'Contenu' et 'Pistes' dans un contexte de discoraphie d'un groupe.
La première table me permet de gérer le contenu d'un album (type de support, numéro de l'entité...
ex : face B de la cassette.)
La deuxième table me permet de stocker les tracklistings et cette table contient donc une clé étrangère
vers la première.
 
Mon problème se pose au fait qu'il y ait des pistes cachées. Pour gérer cela, j'ai une clé dans la table
'Pistes' qui pointe sur elle-même. Exemple : si la 5ème piste nommée 'Truc' de mon album contient 2 pistes  
cachées 'Cache1' et'Cache2' alors dans la table 'Pistes' j'ai :
 
id             Nom           idParent        numero_piste
----------------------------------------------------------
idTruc         Truc          null            5
idCache1       Cache1        idTruc          1
idCache2       Cache2        idTruc          2
 
Avec les numero_piste de 'Cache1' et'Cache2' étant les numéros d'ordre dans lesquels les chansons apparaissent
après la chanson 'Truc'.
 
Sachant que les pistes ne sont pas forcément enregistrées dans cet ordre en table, je ne peux pas faire d'ORDER BY
id pour les afficher correctement. J'aimerais que ma requête me rende les pistes de l'album
dans leur ordre de numero_piste croissant sachant que doivent apparaîtrent les pistes cachées juste après
leur piste parent, elles-même rangées par numero_piste. Le tout rangé par ordre d'entité (ici, face A, face B)
 
Ex de retour de requête :
 
numero_piste          id             nom            idParent          type          ordre_entité (face)
--------------------------------------------------------------------------------------------------------
1                     id_1           Chanson1       null              K7            A
2                     id_2           Chanson2       null              K7            A
3                     id_3           Chanson3       null              K7            A
4                     id_4           Chanson4       null              K7            A
5                     id_5           Chanson5       null              K7            A
1                     id_6           Chanson6       id_5              K7            A
2                     id_7           Chanson7       id_5              K7            A
6                     id_8           Chanson8       null              K7            A
7                     id_9           Chanson9       null              K7            A
8                     id_10          Chanson10      null              K7            A
9                     id_11          Chanson11      null              K7            A
1                     id_12          Chanson12      id_11             K7            A
10                    id_13          Chanson13      null              K7            A
11                    id_14          Chanson14      null              K7            A
12                    id_15          Chanson15      null              K7            A
1                     id_16          Chanson16      null              K7            B
2                     id_17          Chanson17      null              K7            B
3                     id_18          Chanson18      null              K7            B
......
 
Ca fait 2 jours que je me prends la tete et je n'y arrive pas !!
Merci d'avance pour votre aide.
 
Seb
 

mood
Publicité
Posté le 23-04-2008 à 12:39:18  profilanswer
 

n°1722749
babasss
Posté le 23-04-2008 à 13:18:10  profilanswer
 

Déjà pour la requête, on verra aprés pour l'ordre :

Code :
  1. SELECT A.numero_piste, A.id, A.nom, A.idParent, A.type, A.ordre_entité
  2. FROM TABLES A LEFT JOIN TABLES B
  3. ON A.id = B.idParent


 
POur l'ordre, je réfléchis...


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
n°1722751
babasss
Posté le 23-04-2008 à 13:19:06  profilanswer
 

Tu travailles sur quel SGBD ?


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
n°1722752
babasss
Posté le 23-04-2008 à 13:24:49  profilanswer
 

PEux être comme ca :  

Code :
  1. SELECT A.numero_piste, A.id, A.nom, A.idParent, A.type, A.ordre_entité
  2. FROM TABLES A LEFT JOIN TABLES B
  3. ON A.id = B.idParent
  4. ORDER BY ordre_entite,
  5.  (IF idParent = NULL THEN CONCAT(id,"_",0)
  6.   ELSE CONCAT(idParent,"_",id)
  7.  END IF)


 
mais je ne suis pas sur que ton SGBD aime le if dans l'ORDER BY, sinon tu peux essayer de mettre le if dans un champ avec un AS et de le rappeler dans l'ORDER BY

Code :
  1. SELECT A.numero_piste, A.id, A.nom, A.idParent, A.type, A.ordre_entité,
  2. (IF idParent = NULL THEN CONCAT(id,"_",0)
  3.   ELSE CONCAT(idParent,"_",id)
  4.  END IF) AS tri
  5. FROM TABLES A LEFT JOIN TABLES B
  6. ON A.id = B.idParent
  7. ORDER BY ordre_entite, tri



---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
n°1722864
zeOffsprin​g
Posté le 23-04-2008 à 14:58:07  profilanswer
 

babasss a écrit :

Tu travailles sur quel SGBD ?


 
MySQL :)
je continue de réfléchir


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

  Regroupement et Tri : cas particuler

 

Sujets relatifs
tri et regroupement[Débutant] Tri sur un tableau, totalement perdu ...
Tri à bulle (forme recursif)!!!!!!!Tri colonnes VBA Excel
[Oracle] Tri personnalisé sur colonnevba - Excel - Tri de lignes via une tmplist()
[SQL] Optimisation de requête "regroupement X-en-1" (tri ?)[Résolu] Tri dans boucle
Tri de réponses chiffre/caractère [resolu]Tri de tableau sur la fréquence des éléments
Plus de sujets relatifs à : Regroupement et Tri : cas particuler


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)