2012-02-09 11 views
1

データベースに次のテーブルがあります。データベーステーブル内の特定の単語の出現数を取得するクエリ

 
users 
----------------- 
| id | username | 
----------------- 
| 1 | goje  | 
| 2 | john  | 
| 3 | henry | 
----------------- 

comments 
------------------------------------------------- 
| id | uid |   comment     | 
------------------------------------------------- 
| 1 | 1 | One who works hard is the one who | 
| |  | succeeds       | 
| 2 | 1 | This one was the best.    | 
| 3 | 2 | You are one of my best friends. | 
| 4 | 3 | He was the one who bought this one.| 
------------------------------------------------- 

ここで、指定された単語が「1」であると仮定します。私は、私のユーザーのテーブル内の各ユーザーのこの単語の出現数を知ることができるMySQLのクエリを持っていると思います。 Iこの場合、結果は

 
-------------------- 
| username | count | 
-------------------- 
| goje  | 3  | -> 2 in first comment and 1 in second 
| henry | 2  | -> 2 in henry's only comment 
| john  | 1  | 
-------------------- 

親切に私はどのように私はこの使用してSQLを達成することができます知っているようでなければなりません。ありがとう!! REGEXPのアプローチが少ないか、より高価である場合、私は知らない

SELECT 
users.username AS username, 
round(sum((LENGTH(comments.comment) - LENGTH(REPLACE(LOWER(comments.comment),"one", "")))/LENGTH("one")), 0) AS count 
FROM users 
INNER JOIN comments ON comments.uid = users.id 
GROUP BY users.id 
ORDER BY count DESC; 

+0

私はあなたがregexpを使ってよくある質問だと思っています:http://dev.mysql.com/doc/refman/5.1/en/regexp.html –

+0

削除されたクエリは、 :最初のコメントで2。それは、カウントではなく、単語ではなくレコードをカウントするため、ただ1を返します。これを行う唯一の方法は、REGEXPのようにテキストを解析することです。 –

+1

http://stackoverflow.com/questions/738282/how-do-you-count-the-number-of-occurrences-of-a-certain-substring-in-a-sql-varch –

答えて

3

は、この文字列で検索してください。

+0

AWESOME !!! :)どのようなアプローチ!私がREGEXPを使ってみても、単語を持つレコードの数だけ取得できますが、発生数は取得できません。 – Goje87

関連する問題