Bonjour à tous.
Au départ, ça me semblait hyper simple. Mais j'avais pas trop réfléchi...
Alors voilà : j'ai une bdd ultra simple : les dessins animés de la Warner Bros.
- une table T_film avec deux champs : "ID_film" et "titre" (800 enregistrements)
- une table T_personnage avec deux champs : "ID_personnage" et "nom" (30 enregistrements)
- une table de jonction TJ_personnage_dans_film avec trois champs : "ID_personnage_dans_film", "film_ID" et "personnage_ID" (1300 enregistrements)
Vous l'aurez compris, un film peut avoir 0, 1 ou plusieurs personnages (ex un dessin animé avec Daffy Duck seul, un autre avec Daffy et Bugs Bunny, ou encore un film sans personnage connu) et, bien sûr, les personnages peuvent apparaître dans plusieurs films.
Je veux faire un formulaire de recherche par personnages qui se présente ainsi : les personnages sont présentés avec une case à cocher chacun. Quand on coche un personnage, il affiche dans un sous formulaire tous les films où apparaît ce personnage (ça c'est facile, je sais faire). Mais, si on coche deux personnages, il affiche les films où apparaissent les deux personnages ensemble (ex, Daffy + Bugs Bunny), si on en coche un troisième, il restreint encore en affichant les films où joue le trio (ex : Daffy + Bugs + Elmer), etc. Si on ne coche rien, il affiche les films où n'apparaît aucun personnage connu.
J'ai imaginé qu'il fallait passer par la table de jonction et faire une sélection du style "SELECT * FROM TJ_personnage_dans_film WHERE personnage_ID = x Or y Or z" (exemple avec trois personnages), puis chercher dans les résultats les films qui apparaissent 3 fois, en faire une nouvelle requête de type SELECT DISTINCT pour avoir la liste des films... mais ça ressemble un peu à une usine à gaz et en plus je me sens incapable de mettre ça en place... en bref je me demande s'il n'y aurait pas plus simple.
Quelqu'un aurait-il une solution ?
Partager