Запрос для получения номера вхождения данного слова в таблицу базы данных - PullRequest
1 голос
/ 09 февраля 2012

У меня есть следующие таблицы в базе данных.

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.|
-------------------------------------------------

Теперь давайте предположим, что данное слово "один".Я хотел бы иметь запрос MySQL, который может дать мне знать количество вхождений этого слова для каждого пользователя в таблице пользователей.В этом случае результат должен быть

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

Пожалуйста, дайте мне знать, как я могу добиться этого с помощью SQL.Спасибо !!

1 Ответ

3 голосов
/ 09 февраля 2012

Попробуйте этот запрос:

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;

Я не знаю, стоит ли подход REGEXP дешевле или дешевле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...