J'ai 2 tables:MySQL NOT LIKE requête ne fonctionne pas
- messages
- balises
table tags est structuré comme celui-ci:
- post_id
- tag
Donc, pour chaque balise qui est donnée pour une publication, je crée un enregistrement dans la table des balises. Si un article a 10 étiquettes, il y aura 10 enregistrements dans la table des étiquettes avec ce post_id.
J'essaye maintenant de construire une page de recherche où les utilisateurs peuvent faire une recherche pour des postes où les étiquettes ne contiennent pas les mots-clés donnés. Cela crée un problème cependant. Une requête comme:
SELECT DISTINCT posts.id, posts.title, posts.content
FROM jobs, tags
WHERE tags.tag NOT LIKE '%$keywords%' AND posts.id=tags.post_id
ne fonctionne pas parce que si un poste a obtenu 6 balises et un d'entre eux a obtenu le mot-clé, il sera toujours retourné parce que les 5 autres enregistrements de la table des balises ne sont pas ce mot-clé.
Quelle est la meilleure façon de résoudre ce problème? Toute autre façon que de créer une nouvelle colonne dans la table posts qui stocke toutes les balises séparées par des virgules utilisées uniquement pour la recherche ??
J'étais juste en train de poster que ... :( – Jon
Dois-je créer un index sur la colonne de l'étiquette? –
Un index sur la colonne d'étiquette ne vous aidera pas car vous recherchez tous les enregistrements. vos colonnes post_id – cjk