Как реализовать подсчет тега

Мне разработали мои теги как это в моей базе данных:

Table: Item 
Columns: ItemID, Title, Content 

Table: Tag 
Columns: TagID, Title 

Table: ItemTag 
Columns: ItemID, TagID



//example -- this is the right sidebar of stackoverflow
c# × 59279
sql × 14885
asp.net-mvc × 9123
linq × 4337
tags × 339

если я хотел знать количество каждого тега такой как, как stackoverflow считает их теги, как я сделал бы это? Какой запрос был бы я выполнять. Я открыт и для регулярного sql и для linq

7
задан Luke101 23 January 2010 в 08:13
поделиться

4 ответа

Добавьте еще один столбец в тег таблицы, которая работает как счетчик. Когда вы добавляете или удалите тег из элемента, вы обновляете счетчик (другими словами, при добавлении строки на ItemTag увеличивать счетчик на таблице тегов, при удалении уменьшения счетчика)

Добавить тег на элемент:

INSERT INTO Itemtag (itemid,tagid) VALUES ('$itemid','$tagid');
UPDATE Tag SET counter=counter+1 WHERE tagid='$tagid';

Удалить Тег из элемента

DELETE FROM Itemtag WHERE itemid='$itemid' AND tagid='$tagid';
UPDATE Tag SET counter=counter-1 WHERE tagid='$tagid';

Получить теги элемента со счетчиком

SELECT t.title, t.counter FROM Itemtag AS it JOIN Tag AS t ON t.idtag=it.tagid 
WHERE it.itemid='$itemid'
4
ответ дан 7 December 2019 в 07:45
поделиться
select t.Title, count(it.TagID) as TagCount
from Tag t
  inner join ItemTag it on t.TagID = it.TagID
  inner join Item i on it.ItemID = i.ItemID
where i.ItemID = @currentItemID -- optional, if you only want current page
group by t.Title
3
ответ дан 7 December 2019 в 07:45
поделиться

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

0
ответ дан 7 December 2019 в 07:45
поделиться
SELECT title, count(*) FROM tag
JOIN itemtag ON itemtag.tagid = tag.tagid
GROUP BY title
0
ответ дан 7 December 2019 в 07:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: