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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Lier les lignes d'une table

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Lier les lignes d'une table

n°2293504
donny3
Posté le 11-12-2016 à 13:43:02  profilanswer
 

Salut,
 
J'ai une table qui contient les lignes suivantes(il s'agit d'un échantillon et je n'affiche que les deux colonnes qui m’intéresse):
id est la clé et groupe est id qui permet de lié les clés entre elles.

Code :
  1. id,groupe
  2. 1,5
  3. 4,5
  4. 4,8
  5. 7,8
  6. 12,8
  7. 7,14
  8. 11,14
  9. 21,24
  10. 36,30
  11. 45,45


 
Je souhaite affecter au même id, le même numéro de groupe.
En sortie je souhaiterai

Code :
  1. id,groupe
  2. 1,5
  3. 4,5
  4. 7,5
  5. 12,5
  6. 7,5
  7. 11,5
  8. 21,24
  9. 36,30
  10. 45,45


 
1,4,7,12 et 7 on le même groupe car 1 est lié à 4 et 4 est lié à 7,12 et 7 est lié à 11.
 
Je ne sais pas si c'est possible de le faire en SQL.
j'avais pensé à faire une jointure de cette même table sur le groupe afin d'avoir de chaque côté des paires et ensuite faire une jointure hierarchique.
 
Pas sur que ça marche,si ça loop.
 
Merci
 

mood
Publicité
Posté le 11-12-2016 à 13:43:02  profilanswer
 

n°2293650
sltpaulo
Posté le 14-12-2016 à 15:37:48  profilanswer
 

Salut donny3,
 
il y a plusieurs solutions, après il faut savoir ce que tu veux faire des tes données (traitements).
 
Partons de la table "test".

Code :
  1. select * from test;


https://snag.gy/Q02zse.jpg
 
Si tu veux juste la liste des id par groupe dans une ligne tu peux faire ça :  

Code :
  1. SELECT
  2.     tbl1.groupe, GROUP_CONCAT(DISTINCT tbl2.id) as 'Liste id'
  3. FROM
  4.     test tbl1
  5.         LEFT JOIN
  6.     test tbl2 ON tbl1.groupe = tbl2.groupe
  7. GROUP BY tbl1.groupe;


https://snag.gy/cOaKIW.jpg
 
groupe par id :  

Code :
  1. SELECT
  2.     tbl1.id, GROUP_CONCAT(DISTINCT tbl2.groupe) as 'Liste id'
  3. FROM
  4.     test tbl1
  5.         LEFT JOIN
  6.     test tbl2 ON tbl1.groupe = tbl2.groupe
  7. GROUP BY tbl1.id


 
Après si tu dois traiter des données, tu peux toujours lier tes tables avec d'autres et jouer sur les "group by"
Soit les deux tables :

Code :
  1. SELECT * FROM nom_id;
  2. SELECT * FROM nom_gp;


https://snag.gy/GHz3Ly.jpg https://snag.gy/7nZDjz.jpg
 
La requete suivante t'aidera peut-etre un peu plus :  

Code :
  1. SELECT
  2.     tbl1.id,
  3.     ni.n_id,
  4.     tbl2.groupe AS 'Group id',
  5.     ng.n_gp AS 'Group name'
  6. FROM
  7.     test tbl1
  8.         JOIN
  9.     nom_id ni ON ni.id = tbl1.id
  10.         LEFT JOIN
  11.     test tbl2 ON tbl1.groupe = tbl2.groupe
  12.         JOIN
  13.     nom_gp ng ON ng.id = tbl2.groupe
  14. GROUP BY tbl1.id , tbl2.groupe


 
 
https://snag.gy/TOnDpv.jpg
 


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

  Lier les lignes d'une table

 

Sujets relatifs
Comment faire des lignes brisées ?fusions de plusieurs lignes dans différentes colonnes
Afficher plusieurs lignes sur une seuleFusion de lignes sur excel
Update d'une table pour des enregistrements venant d'une autre tableLier un Datagrid avec une Table Access sous vb6.0
Diverses questions VBACompter le nombre de lignes d'un fichier .
easy php - create table on delete cascade 
Plus de sujets relatifs à : Lier les lignes d'une table


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