Bonjour à tous !
Je stocke les centres d'intérêts d'un certain nombre d'utilisateurs.
Pour celà j'ai une table CategorieCentreInteret qui permet de catégoriser les centres d'intérêts. Une catégorie peut en contenir d'autres :
CategorieCentreInteret(ID, INTITULE, ID_PARENT)
J'ai des centres d'intérêts qui ont pour parent une catégorie de centre d'intérêt :
CentreInteret(ID, INTITULE, ID_CATEGORIE)
Et enfin j'ai des utilisateurs :
Utilisateur(ID, NOM, PRENOM)
Pour lier les utilisateurs et les centres d'intérêts :
UTILISATEUR_CENTREINTERET(ID_CENTREINTERET, ID_UTILISATEUR)
Dans mon application actuellement j'ai besoin de deux requêtes pour :
1) Afficher mes centres d'intérêts et mes catégories dans un arbre :
1 2 3
| Select cci.id, cci.intitule, cci.id_parent, ci.id, ci.intitule, ci.id_categorie
FROM categoriecentreinteret cci
LEFT OUTER JOIN centreinteret ci ON ci.id_parent = cci.id |
2) Récupérer les centres d'intérêts de mon utilisateur et mettre en évidence dans l'arbre les centres d'intérêt qu'il a sélectionné
1 2 3 4
| Select ci.id
FROM centreinteret ci
INNER JOIN utilisateur_centreinteret uci ON uci.id_centreinteret = ci.id
INNER JOIN utilisateur u ON uci.id_utilisateur = u.id |
Suite à cette dernière requête je croise les deux informations.
Est-il possible de faire d'une pierre deux coups ? C'est à dire récupérer l'ensemble des centres d'intérêts avec leurs catégories et de "marquer" les enregistrements qu'un utilisateur x a choisi ?
Merci d'avance pour votre aide
Partager