Выберите *, где имя тега находится в соединительной таблице - PullRequest
0 голосов
/ 13 января 2012

В настоящее время у меня есть запрос, который выбирает все vid_id, где люди просматривают видео, и сортирует их по большинству зрителей.Каждый раз, когда кто-то просматривает видео, в scrusersonline создается запись с полями vid_id username timestamp.

. У меня также есть таблица tag_map и таблица тегов.tag_map содержит поля id tag_id и vid_id, а теги содержат поля tag_id и name.Я просто хотел бы изменить запрос ниже, чтобы все результаты vid_id отображались только для определенного имени тега.Заранее благодарю за любую помощь эксперта.

Запрос, который я пытаюсь изменить.scrusersonline имеет поля vid_id timestamp имя пользователя.Он получает vid_ids с большинством пользователей, просматривающих и сортирует в порядке убывания.Я хотел бы дополнительно ограничить эти результаты определенным именем тега

    SELECT SQL_CALC_FOUND_ROWS scrusersonline.vid_id, COUNT(scrusersonline.id) 
AS idcount FROM scrusersonline 
    GROUP BY scrusersonline.vid_id ORDER BY idcount DESC

Запрос, приведенный ниже, является примером простого выбора всех vid_id с определенным именем тега, но связанных свидео стол.Я хотел бы иметь возможность изменить запрос выше, чтобы он отображал результаты только для имени тега

SELECT SQL_CALC_FOUND_ROWS video.* FROM tag_map 
               INNER JOIN tags2 ON tags2.tag_id = tag_map.tag_id
INNER JOIN video ON video.vid_id = tag_map.vid_id
    WHERE name IN (?) 
    ORDER BY video.timestamp DESC LIMIT ?, ?

1 Ответ

1 голос
/ 13 января 2012

Следующие результаты должны дать вам ваши результаты:

SELECT SQL_CALC_FOUND_ROWS a.vid_id, count(a.id) as idCount
FROM scruseronline as a
INNER JOIN tag_map as b
ON b.vid_id = a.vid_id
INNER JOIN tags2 as c
ON c.tag_id = b.tag_id
AND c.name IN (?)
GROUP BY a.vid_id
ORDER BY idCount DESC

О, вы можете удалить id из tag_map, так как комбинация других полей должна быть уникальной, а на суррогатный ключ обычно не ссылаются.

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