Jointure et tri sur 4 tables
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:
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")+" -> ");
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;
} |
Citation:
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 :)