0

フィールドを持つテーブルがあります:

id, albumid, userid,keywordsここでキーワードはvarchar区切り文字で複数指定できます。例: one,two,three

最も人気のあるキーワードの上位 10 件の結果を取得したいのですが、現在これを使用しているのと同じユーザーによるものではありませんが、正しいかどうかはわかりません。

 $tableName = $db->nameQuote('#__mytable');

 $sql = "SELECT `id`,`albumid`,`userid`,`keywords`, COUNT(keywords) AS popular FROM ".$tableName." GROUP BY `userid` HAVING COUNT(*) > 1 ORDER BY popular DESC LIMIT ".$lim0.",".$lim;

 $db->setQuery($sql); 

次のコードは正しいですか。重複するエントリが最も多いキーワードを取得しているかどうかはわかりません...

4

1 に答える 1

0

サイズについてこのクエリを試してみてください。グループ化をごまかし、DISTINCT ユーザー ID をカウント メトリックとして使用しています。

"SELECT `id`,`albumid`,`keywords`, COUNT(DISTINCT userid) AS popularity FROM ".$tableName." GROUP BY `keywords` HAVING popularity >= 1 ORDER BY popularity DESC LIMIT ".$lim0.",".$lim;

ただし、キーワード列がカンマで区切られている場合、このクエリは機能しません。このクエリは、各レコードに 1 つのキーワード エントリがあるという事実に基づいて動作します。

于 2012-09-28T05:15:47.663 に答える