Bonjour!

J'ai un peu soucis.
Voilà, j'ai deux tables "roles" contenant une liste de joueurs ainsi que les rôles de chacun dans une journée, et une table "users" contenant la liste des utilisateurs.

Voici un extrait :
* TABLE "roles" : id, jour, id_user1_role, id_user2_role, id_user3_role, id_user4_role, id_user5_role, id_user6_role
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
1   J1   1   2   3   4   5   6
2   J2   3   6   5   6   4   1
3   J3   3   6   2   1   5   4
4   J4   6   4   3   2   1   5
etc.
* TABLE "users" : id, nom
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
1   DURAND
2   DUPOND
3   TOI
4   MOI
etc.
Dans une journée, un utilisateur n'a qu'un et un seul rôle.
Ainsi, dans l'enregistrement suivant de la table "rôles" :
nos 6 utilisateurs ont eu chacun un rôle respectif. Un utilisateur ne peut pas avoir deux rôles dans la même journée. Voilà pour les présentations.

Maintenant, j'aimerais avoir l'ensemble des rôles. La ligne suivante me retourne cette liste :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
// Création de l'instance "rôles"
$roles = new Role_Model_DbTable_Roles();
 
// Récupération de tous les roles
$this->view->roles = $roles->fetchAll();
Et le code suivant, dans le même contrôleur, me permet de récupérer les utilisateurs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
// Création de l'instance "users"
$users = new Role_Model_DbTable_Users();
 
// Récupération de tous les users
$this->view->users = $users->fetchAll();
Ce que j'aimerais pouvoir faire, c'est afficher ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
1   J1   DURAND   DUPOND   TOI     MOI      etc      etc
2   J2   TOI      etc      etc     etc      MOI      DURAND
3   J3   TOI      etc      DUPOND  DURAND   etc      MOI
4   J4   etc      MOI      TOI     DUPOND   DURAND   etc
chaque "id" de l'utilisateur étant remplacé par le nom correspondant.
L'une des solutions que j'ai, c'est de faire un foreach imbriqué dans un autre.
Pour chaque enregistrement d'un rôle
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<?php foreach($this->roles as $role) : ?>
je dois parcourir autant de fois le Zend_Db_Table_Rowset de la table "users" que j'ai d'utilisateurs (6 pour mon exemple). Ca va faire très lourd, car j'ai 365 (ou 366) jours par an donc 365 (ou 366) enregistrements par an.
L'autre solution, c'est pour chaque "id" de l'enregistrement d'un rôle, rechercher dans la table "users" le nom correspondant. Donc pour chaque un enregistrement, une requête avec en paramètre les id des utilisateurs concernés sera exécutée sur la table "users"...

Auriez-vous une solution moins coûteuse et peut-être plus rapide (en réalité, dans une journée, j'ai plus d'une centaine d'utilisateurs ayant chacun un rôle respectif) ?
Merci.