Bonjour,
Je désire toujours dans l'application d'un forum pouvoir faire une table qui contiendrait le nombre de messages posté par un membre et ceci pour chaque forum.
A 1ère vue, ça me donnerait une table de ce style :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 CREATE TABLE MEMBRE_POST( membre_id INT(5) UNSIGNED NOT NULL, forum_id INT(2) UNSIGNED NOT NULL, nb_post INT(5) UNSIGNED DEFAULT 0, INDEX(membre_id, forum_id) FOREIGN KEY(membre_id) REFERENCES MEMBRE(membre_id) ON UPDATE CASCADE ON DELETE CASCADE, FOREIGN KEY(forum_id) REFERENCES F_FORUM(forum_id) ON UPDATE CASCADE ON DELETE RESTRICT ) TYPE = INNODB;
Donc autant de lignes pour un seul membre qu'il n'y a de forum.
Mais ça me pose problème car je suis contraint de vérifier avec un UPDATE si le membre a déjà posté dans le forum, donc une requête supplémentaire, pas top.
J'ai donc pensé à une table de même type, sauf que chaque forum sera représenté par une colonne avec pour défaut 0, une nouvelle ligne sera créée dès l'inscription du membre, un ALTER TABLE serait effectué en cas d'ajout d'un nouveau forum.
Cela me permettrait en faisant ça, un UPDATE sans SELECT préalable.
Seulement, et oui, il faudrait que je stocke l'id du forum dans le nom de la colonne, et ça c'est pas tip-top non plus...
Bref, j'arrive pas à trouver une solution correcte tout en prenant en compte que je ne doit pas vérifier avant mon UPDATE si la ligne existe déjà.
Auriez vous une idée de comment faire ?
Partager