Bonjour,
Ma BDD gère les POSTE informatique de CLIENT répartis dans une hiérarchie de GROUPE (+sous groupes = GROUPE).
En gros, un groupe peut avoir 0,n groupes et chaque client a 1,n groupes (avec un seul groupe de niveau 1).
Voici ma base test :
Ci-dessous, ma requête actuelle qui ne gère pas les "sous-groupe" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 CREATE TABLE "CLIENT" ( "id" INTEGER PRIMARY KEY , "nom" VARCHAR(50) NOT NULL ); CREATE TABLE "GROUPE" ( "id" INTEGER PRIMARY KEY , "nom" VARCHAR(50) NOT NULL , "id_client" INTEGER , "id_groupe_parent" INTEGER ); CREATE TABLE "POSTE" ( "id" VARCHAR(38) NOT NULL UNIQUE , "nom" VARCHAR(16) NOT NULL , "datetime_cnx" TIMESTAMP ); ALTER TABLE "GROUPE" ADD FOREIGN KEY ("id_client") REFERENCES "CLIENT" ("id"); ALTER TABLE "POSTE" ADD FOREIGN KEY ("id_groupe") REFERENCES "GROUPE" ("id"); ALTER TABLE "GROUPE" ADD FOREIGN KEY ("id_groupe_parent") REFERENCES "GROUPE" ("id");
L'idéal serait d'avoir ce genre de résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SELECT C.nom AS C_nom, G.id AS G_id, G.nom AS G_nom, P.id AS P_id, P.nom AS P_nom FROM POSTE AS P, GROUPE AS G, CLIENT AS C WHERE C.id = G.id_client AND P.id_groupe = G.id
et... pour finalement générer un tableau avec ruptures du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Client-1, G1, Ordinateurs, P1, Poste-1 Client-1, G1, Ordinateurs, P2, Poste-2 Client-2, G2, Ordinateurs, P3, Poste-12 Client-2, G2, Ordinateurs, P4, Poste-22 Client-2, G3, Comptabilité, P5, Poste-3 Client-2, G3, Comptabilité, P6, Poste-4 Client-2, G3, Comptabilité, P7, Poste-5 Client-2, G4, Facturation, P8, Poste-6 Client-2, G4, Facturation, P9, Poste-7
Quelle méthode me permettrait cela ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 + Client-1 + G-Ordinateurs Poste-1 Poste-2 + Client-2 + G-Ordinateurs Poste-12 Poste-22 + G-Comptabilité Poste-3 Poste-4 Poste-5 + G-Facturation Poste-6 Poste-7
Merci pour votre aide !
Partager