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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Regrouper plusieurs lignes d'une seule table avec un ID commun

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Regrouper plusieurs lignes d'une seule table avec un ID commun

n°2337045
onslaugh2
Posté le 22-07-2019 à 17:18:39  profilanswer
 

Bonjour à la communauté,
 
A force d'écumer le web je me suis mis un gros mal de tête mais n'arrive toujours pas à résoudre mon problème. Aussi j'en appelle à vos expériences (et au sein gourou du SQL) pour résoudre ceci (qui je suis sûr en fera rire bon nombre^^) :
 
J'ai une table de ce type :
____________________________
ID|POS|VAL|
---------------------------------------
1 |a|1,5
1 |b|2,5
1 |c|0
2 |a|1,4
2 |b|2,3
___________________________
 
 
et j'aimerais via une requête obtenir ceci :
_______________________________
ID|POS1|VAL1|POS2|VAL2|POS3|VAL3
-------------------------------------------
1 |a|1,5|b|2,5|c|0
2 |a|1,4|b|2,3|null|null
_______________________________
 
En complément il s'agit d'une base PostgreSQL
 
J'ai par ailleurs un champs de géométrie associé à ID qui devrait faire partie du regroupement, cela posera t-il souci svp ?  
 
En vous remerciant pour votre temps de lecture et encore plus pour vos éventuelles réponses.  
 
Bonnes vacances à ceux qui le sont déjà et bon courage aux autres :p

mood
Publicité
Posté le 22-07-2019 à 17:18:39  profilanswer
 

n°2337051
mechkurt
Posté le 22-07-2019 à 18:05:44  profilanswer
 

Je connais pas bien PostgreSQL mais quelque chose comme ca :
http://sqlfiddle.com/#!17/7495a/7

Code :
  1. CREATE TABLE test (
  2.     ID SERIAL,
  3.     POS varchar(1),
  4.     VAL varchar(3)
  5. );
  6. INSERT INTO test(ID, POS, VAL) VALUES
  7. (1,'a','1,5'),
  8. (1,'b','2,5'),
  9. (1,'c','0'),
  10. (2,'a','1,4'),
  11. (2,'b','2,3');
  12. SELECT s.ID, a.POS as POS1, a.VAL as POS1, b.POS as POS2, b.VAL as POS2, c.POS as POS3, c.VAL as POS3
  13. FROM test s
  14. LEFT JOIN test a ON a.ID = s.ID AND a.POS = 'a'
  15. LEFT JOIN test b ON b.ID = s.ID AND b.POS = 'b'
  16. LEFT JOIN test c ON c.ID = s.ID AND c.POS = 'c'
  17. GROUP BY s.ID, a.POS, a.VAL, b.POS, b.VAL, c.POS, c.VAL
  18. ORDER BY s.ID


---------------
D3
n°2337052
onslaugh2
Posté le 22-07-2019 à 18:20:43  profilanswer
 

mechkurt a écrit :

Je connais pas bien PostgreSQL mais quelque chose comme ca :
http://sqlfiddle.com/#!17/7495a/7

Code :
  1. CREATE TABLE test (
  2.     ID SERIAL,
  3.     POS varchar(1),
  4.     VAL varchar(3)
  5. );
  6. INSERT INTO test(ID, POS, VAL) VALUES
  7. (1,'a','1,5'),
  8. (1,'b','2,5'),
  9. (1,'c','0'),
  10. (2,'a','1,4'),
  11. (2,'b','2,3');
  12. SELECT s.ID, a.POS as POS1, a.VAL as POS1, b.POS as POS2, b.VAL as POS2, c.POS as POS3, c.VAL as POS3
  13. FROM test s
  14. LEFT JOIN test a ON a.ID = s.ID AND a.POS = 'a'
  15. LEFT JOIN test b ON b.ID = s.ID AND b.POS = 'b'
  16. LEFT JOIN test c ON c.ID = s.ID AND c.POS = 'c'
  17. GROUP BY s.ID, a.POS, a.VAL, b.POS, b.VAL, c.POS, c.VAL
  18. ORDER BY s.ID



 
 
Merci d'après mes premiers test cela fonctionne, reste à faire cela sur toutes mes autres valeurs :) Excellente fin de journée !


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

  Regrouper plusieurs lignes d'une seule table avec un ID commun

 

Sujets relatifs
Diviser un gros document Word en plusieurs Word unique (1200 pages)bash- recherche lignes dans bloc et affichage dans tableau
Oracle - DROP TABLE[AIDE] Highcharts - graphique en fonction d'une var ID et Time
Table à 2 colonnes - Définir variables selon Id (Résolu)[HTML/CSS][JavaScript] Récupérer un ID sur une autre page Web
Plusieurs pages html appellent le même menu. Possible svp ?[MySQL] Plusieurs tables ou une seule grosse dans ce cas?
Plus de sujets relatifs à : Regrouper plusieurs lignes d'une seule table avec un ID commun


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