Ou alors, je garde les keyword aussi dans ma table d'origine et je les récupère via une jointure... Ca oblige à garder les keywords dans 2 tables, mais ça allège considérablement la requête.
...Mais ça va allourdir considérablement d'autres opérations. Exemples vite fait :
- Modification / ajout de keyword (en particulier, comment gérer la distinction entre une modif et un ajout de keyword, qui se traduisent tous deux par un UPDATE dans ta première table).
- Passage à 5 (puis 6, puis ...) keywords
Après, c'est difficile de répondre sans connaître les aspects fonctionnels.
Tu es certain de conserver un maximum de 4 keywords ? Il pourront être mis à jour (à quelle fréquence) ? Cette requête passera régulièrement ? Il y aura beaucoup de modifications ? etc.
Là comme ça, je dirais que le plus simple c'est d'utiliser la table supplémentaire (on l'appellera Keywords) :
SELECT id, keyword FROM Keywords WHERE keyword in (...)
Ensuite, tu boucles et tu fais la somme en PHP.
Eventuellement,
SI tu travailles sur une grosse table relativement statique, tu peux stocker le résultat (par exemple avec
serialize())
Comme ça tu conserves une Base de donnée correcte (voir
le post sur la normalisation), une requête simple, et le code PHP pour la présentation reste simple (c'est juste une boucle sur le résultat de ta requêteet une comparaison entre l'ID courant et l'ID précédent - il doit même être possible de stocker l'ensemble des résultats dans un tableau et de le travailler)
[quote="Ehplod"]Ou alors, je garde les keyword aussi dans ma table d'origine et je les récupère via une jointure... Ca oblige à garder les keywords dans 2 tables, mais ça allège considérablement la requête.[/quote]
...Mais ça va allourdir considérablement d'autres opérations. Exemples vite fait :
- Modification / ajout de keyword (en particulier, comment gérer la distinction entre une modif et un ajout de keyword, qui se traduisent tous deux par un UPDATE dans ta première table).
- Passage à 5 (puis 6, puis ...) keywords
Après, c'est difficile de répondre sans connaître les aspects fonctionnels.
Tu es certain de conserver un maximum de 4 keywords ? Il pourront être mis à jour (à quelle fréquence) ? Cette requête passera régulièrement ? Il y aura beaucoup de modifications ? etc.
Là comme ça, je dirais que le plus simple c'est d'utiliser la table supplémentaire (on l'appellera Keywords) :
[sql]SELECT id, keyword FROM Keywords WHERE keyword in (...)[/sql]
Ensuite, tu boucles et tu fais la somme en PHP.
Eventuellement, [i]SI[/i] tu travailles sur une grosse table relativement statique, tu peux stocker le résultat (par exemple avec [b]serialize()[/b])
Comme ça tu conserves une Base de donnée correcte (voir [url=http://forum.phpfrance.com/sql-bases-donnees/petit-rappel-normalisation-une-base-donnees-t23004.html]le post sur la normalisation[/url]), une requête simple, et le code PHP pour la présentation reste simple (c'est juste une boucle sur le résultat de ta requêteet une comparaison entre l'ID courant et l'ID précédent - il doit même être possible de stocker l'ensemble des résultats dans un tableau et de le travailler)