Подсчитать количество слов в предложении одним запросом. Реально?

grey109

Новичок
Приветствую.

Еще не могу победить один запрос. Таблица:
SQL:
CREATE TABLE IF NOT EXISTS `db` (
  `id` int(8) unsigned NOT NULL,
  `word` varchar(250)  NOT NULL
) ENGINE=MEMORY;

INSERT INTO `db` (`id`, `word`) VALUES
(1, 'word1'),
(1, 'word1'),
(2, 'word2'),
(1, 'word3'),
(1, 'word4'),
(2, 'word4');
Сейчас я скриптом подсчитываю слова так:
PHP:
$result = mysql_query("SELECT DISTINCT id FROM `db`");
while (list ($id) = mysql_fetch_row($result))
{
echo "для ID: ".$id."<br>";

    $result2 = mysql_query("SELECT count(*), word FROM `db` WHERE id='".$id."' GROUP BY `word`");
    while (list ($count, $word) = mysql_fetch_row($result2))
    {
echo "  слово: ".$word." повторяется ".$count." раз,";
    }
}
Получаю верный результат:
для ID: 1слово: word1 повторяется: 2,слово: word3 повторяется: 1слово: word4 повторяется: 1
для ID: 2слово: word2 повторяется: 1слово: word4 повторяется: 1

Т.к. таблица большая, то вложенные циклы выполняются долго. Хотелось бы объять необъятное одним запросом получить аналогичный результат. Нужно что-то вроде этого, только чтобы результат был верный :)

SQL:
SELECT id, word, count(*) FROM `db` WHERE id  in (SELECT DISTINCT id FROM `db`) group by word
Спасибо за помощь!
 
Последнее редактирование:

fixxxer

К.О.
Партнер клуба
Что такое "предложение"? Что такое id? id предложения?
 

grey109

Новичок
Отредактировал пост, убрав слово "предложение", заменив его просто на ID. Пусть это будет ID числом чего-то там. Мне важно получить результат как в таблице одним запросом... если такое вообще возможно.
 
Сверху