Подсчет одной таблицы записей для сопоставления записей другой таблицы - PullRequest
2 голосов
/ 21 апреля 2011

Привет, ребята. Вот моя таблица того, как это работает:

enter image description here

Я хочу иметь возможность подсчитать количество просмотров (это уникальные представления, содержащие IP-адрес пользователя) для записей, которые соответствуют записи в другой таблице, например, я делаю запрос GET, и запрос SQL найдет совпадения. и посчитайте количество просмотров, которые были собраны для каждой записи, чтобы она выглядела примерно так:

GET-запрос: stack

Дисплей:

   record_id    |    keyword    |    total_views
----------------------------------------------------
       2        |     stack     |         2
----------------------------------------------------
       5        |     stack     |         1 

Как видно из таблицы, существуют 2 представления для record_id 2 и 1 представления для record_id 5 и т. Д. Вы понимаете, о чем я? У меня возникли проблемы, зная, как это сделать.

Приветствие.

Ответы [ 2 ]

4 голосов
/ 21 апреля 2011
SELECT  r.*, COUNT(v.record_id)
FROM    records r
LEFT JOIN
        views v
ON      v.record_id = r.record_id
WHERE   r.keyword = 'stack'
GROUP BY
        r.record_id

Создайте следующие индексы:

records (keyword, record_id)
views (record_id)

, чтобы это работало быстро.

0 голосов
/ 21 апреля 2011
select `record_id`, `keyword`, count(*) as `total_views`
       from `views` join `records` using (`record_id`)
       where `keyword`='stack'
       group by `record_id`
...