Как лучше всего отображать количество элементов, связанных с тегами? - PullRequest
0 голосов
/ 29 января 2009

Следуя этой рекомендации относительно структуры таблиц тегов, я реализовал следующий дизайн:

Table: Item
Columns: ItemID, Title, Content

Table: Tag
Columns: TagID, Title

Table: ItemTag
Columns: ItemID, TagID

Я столкнулся с другой проблемой, хочу отобразить номер каждого тега в системе. Каков наилучший способ сделать это с точки зрения поискового запроса / php-кода, который не окажет серьезного влияния на производительность (для каждого элемента появится количество тегов).

Спасибо

Roy

Ответы [ 3 ]

2 голосов
/ 29 января 2009

Уверен, что следующий (SQL) получит все заголовки тегов и связанные с ними значения того, как часто они появляются на элементах.

select tag.title, count(itemtag.tagid) 
from tag, itemtag
where itemtag.tagid = tag.tagid
group by tag.title
2 голосов
/ 29 января 2009
select count(*)
from ItemTag
where TagId = X

- это MySQL, который получит его динамически.

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

1 голос
/ 29 января 2009
SELECT Tag.Title, COUNT(Tag.TagID) AS TagCount
FROM ItemTag
LEFT JOIN Tag ON
(ItemTag.TagID = Tag.TagID)
GROUP BY Tag.Title
ORDER BY Tag.Title

Дает вам список тегов (в алфавитном порядке) с указанием количества раз их использования против элемента. Неиспользуемые теги не отображаются.

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