2011-06-26 10 views
0

タグで類似アイテムを表示したいPHP MySQLが関連するタグを使って表示する

itemid,itemnameおよびitemtagidsの項目表があります。 itemtagidsにはCSVタグIDがあります。 itemid 1

言って、私が欲しい

..私は3つのタグID 1,2,3を持っているとitemid 2に私は4つのタグID itemid 33,4,5,6私は上の2つのタグID 2,3とを持っているを持っていることitemid第三同様の項目でitemid 1ため(それは2マッチングを持っているので)最初に表示する必要があり、その後itemid 2など..私が使用している何

は次のとおりです。

SELECT itemid 
FROM items 
WHERE MATCH (itemtagids) AGAINST ('2823' IN BOOLEAN MODE) 

itemtagiditemtags ids列にある場合のみ結果を返します。タグは、IDSの形態である。この場合には何をすべきか234,546,2823,342,5643だから、ここ2823個々の単語が、234,54からの完全な文字列ではありません... 43

シーケンスは何か嘘ですCSV形式で表示されます。

+0

Many-2-Many Relationshipsを使用していますか? – RobertPitt

答えて

0

FULLTEXTはあなたのケースの正しい検索ではないようです。代わりに正規表現を使用してみてください。

SELECT `itemid` 
FROM `items` 
WHERE `itemtagids` REGEXP '^2823$' 
OE `itemtagids` REGEXP '^2823,' 
OR `itemtagids` REGEXP ',2823$' 
OR `itemtagids` REGEXP ',2823,'; 

EDIT:

SELECT `itemid` 
FROM `items` 
WHERE `itemtagids` REGEXP '[[:<:]]2823[[:>:]]'; 

はそれが役に立てば幸い:または、おそらくあなたのような、単一の正規表現で行う可能性があります!

関連する問題