Bonjour à tous,

Ma problèmatique est la suivante :
J'ai pour mon trombinoscope 4 tables :

Collaborateur
id | nom
++++++++++++++
1 | pierre
++++++++++++++
2 | paul
++++++++++++++
3 | jacques

Fonction
id | nom_fonction
+++++++++++++++++
1 | technicien
+++++++++++++++++
2 | responsable
+++++++++++++++++
3 | chef agence

Agence
id | nom_agence
+++++++++++++++++
1 | agence nord
+++++++++++++++++
2 | agence est
+++++++++++++++++
3 | agence sud

Collaboration
id | id_collaborateur | id_fonction | id_agence
+++++++++++++++++++++++++++++++++++++++++++++++
1 | 1 | 1 | 1
+++++++++++++++++++++++++++++++++++++++++++++++
2 | 1 | 2 | 1
+++++++++++++++++++++++++++++++++++++++++++++++
3 | 1 | 2 | 2

La table collaboration est en gros ma table de jointures. L'exemple ci-dessus montre que Pierre est technicien dans l'agence nord, et est responsable dans deux agences : l'agence nord et l'agence est.

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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
var RS_collaborateur = Server.CreateObject("ADODB.RecordSet");
var RS_collaboration = Server.CreateObject("ADODB.RecordSet");
var RS_fonction = Server.CreateObject("ADODB.RecordSet");
var RS_agence = Server.CreateObject("ADODB.RecordSet");
 
var req = "SELECT nom FROM collaborateur";
RS_collaborateur.Open(req,conn,3,1);
 
while (!RS_collaborateur.EOF)
{
	Response.Write("<strong>"+RS_collaborateur("nom")+" :</strong><br />");
 
	req = "SELECT * FROM collaboration WHERE (id_collaborateur='"+RS_collaborateur("id")+"')";
	RS_collaboration.Open(req,conn,3,1);
 
	while (!RS_collaboration.EOF)
	{
		req = "SELECT nom_fonction FROM fonction WHERE (id='"+RS_collaboration("id_fonction")+"')";
		RS_fonction.Open(req,conn,3,1);
		Response.Write(RS_fonction("nom_fonction")+"&nbsp;-&gt;&nbsp;");
		RS_fonction.Close;
 
		req = "SELECT nom_agence FROM agence WHERE (id='"+RS_collaboration("id_agence")+"')";
		RS_agence.Open(req,conn,3,1);
		Response.Write(RS_agence("nom_agence")+"<br />");
		RS_agence.Close;
 
		RS_collaboration.MoveNext;
	}
	RS_collaboration.Close;
        RS_collaborateur.MoveNext;
        Response.Write("<br /><br />");
}
RS_collaborateur.Close;
}
Affichage :

Pierre :
Technicien -> Agence nord
Responsable -> Agence nord
Responsable -> Agence est
Pour commencer, est-ce que ma méthode d'autodidacte vous parrait correct où vous pensez que c'est trop lourd à afficher. Est- ce que ça serait pas mieux avec une jointure externe ?

Merci pour celui qui voudra bien se pencher sur mon problème de néophite