0

ユーザーが質問したときにタグを入力できる入力ボックスがあります。これらは、次のようにコンマで区切られます。

test1, test2, test3, test4

questionsのテーブル構造は次のとおりです。

ここに画像の説明を入力してください

質問のタグを表示するにexplode(",", $qinfo['tags'])は、foreachループを使用します。

しかし、別の「人気のあるタグ」ページに、最も人気のあるものから最も人気のないものまでのタグを表示する方法がわかりません。

助けてくれてありがとう!

4

2 に答える 2

4

そのため、タグを他のテーブルに個別に(コンマで区切ってはいけません)配置する必要があります。

于 2012-05-26T17:07:35.553 に答える
2

作成tagsしてquestions_tagsテーブル化する必要があります。

tags
----
id
name

questions_tags
-------------
id
question_id
tag_id

そして、人気順にタグを並べ替えます。

SELECT t.id, t.name, COUNT(qt.id) AS total
FROM tags t
LEFT JOIN questions_tags qt ON t.id=qt.tag_id
GROUP BY t.id, t.name
ORDER BY total DESC

ただし、tagsフィールドをquestionsテーブルに保持することをお勧めします。キャッシュに使用します。例:単一の質問を表示している場合は、tagsandquestions_tagsテーブルをクエリする必要はありません。

于 2012-05-26T17:20:09.113 に答える