2011-12-24 6 views
0

J'ai deux tables: articles et étiquettes. Je dois rappeler la quantité de toutes les étiquettes dans la table TAGS. Cela ne devrait pas être difficile parce que j'utilise l'index FULLTEXT dans le tableau ARTICLES - il est possible de rechercher à l'aideRecomposer des étiquettes en une seule requête

MATCH(tags) AGAINST ('+tag' IN BOOLEAN MODE) 

Il est similaire au schéma de base de données débordement de la pile.

J'ai essayé quelque chose comme ça, mais de toute évidence, il ne fonctionne pas:

UPDATE tags 
SET tags.amount=(SELECT COUNT(*) FROM articles 
         WHERE MATCH(articles.tags) 
         AGAINST (CONCAT('+',tags.tag) IN BOOLEAN MODE) 
+0

Que signifie "il ne fonctionne pas" signifie? Vous obtenez une erreur? Si oui quoi? –

+0

"# 1210 - Arguments incorrects à AGAINST" - problème avec CONCAT – boreq

+0

Comment stockez-vous plusieurs étiquettes dans une seule colonne? –

Répondre

0

Toujours lire le manuel lorsque vous obtenez un message d'erreur, il est utile plus rapidement:

CONTRE prend une chaîne pour rechercher, et un modificateur optionnel qui indique le type de recherche à effectuer. La chaîne de recherche doit être une chaîne littérale, pas une variable ou un nom de colonne.

Ref: http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html#function_match

donc ce que vous essayez d'atteindre est mal fait. Utilisez une chaîne littérale au lieu d'une fonction (CONCAT) et un nom de colonne.

Une question connexe est: MySQL Match issue

Questions connexes