Генерация подсчета облаков тегов с учетом этих 3 таблиц - PullRequest
3 голосов
/ 22 сентября 2009

У меня есть три таблицы для хранения тегов для фотоальбомов. Вот схема

Таблица 1: Альбомы
Album_ID
Album_Name

Таблица 2: AlbumTags
Tag_id
Tag_Name

таблица 3: AlbumTagBridge
ID
Tag_id
Album_ID

Какой самый эффективный SQL-код позволяет создать набор результатов, который выглядит следующим образом:

Tag_Name | Count
Тег 1 | 19
Тег 2 | 3
Тег 3 | 17

Ответы [ 2 ]

2 голосов
/ 22 сентября 2009
SELECT dbo.AlbumTags.Tag_Name, 
       COUNT(dbo.AlbumTagBridge.Tag_Id) AS Cnt
FROM dbo.AlbumTagBridge 
INNER JOIN dbo.AlbumTags ON dbo.AlbumTagBridge.Tag_Id = dbo.AlbumTags.Tag_ID
GROUP BY dbo.AlbumTags.Tag_Name
0 голосов
/ 22 сентября 2009
Select Tag_Name, COUNT(AlbumTagBridge.ID)
From AlbumTags
Join AlbumTagBridge USING(Tag_ID)
Group By Tag_Name

Группировка по AlbumTags.Tag_ID, Tag_name может быть немного дешевле в зависимости от вашей индексации & c (особенно если ваш движок SQL не такой уж умный ;-), но поскольку вы ничего не говорите нам ни о своих индексах, ни о вашем движке, это о лучшем, что мы можем сделать.

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