Получение количества связанных тегов - PullRequest
1 голос
/ 31 октября 2009

Я недавно задал этот вопрос, чтобы получить похожие теги, как в переполнении стека: каков запрос для получения "связанных тегов", как при переполнении стека

Я хотел бы показать количество, как в переполнении стека, поэтому для каждого связанного тега, каково количество этого другого тега для вопросов с первым тегом?

Потому что все эти запросы различны. Я не думаю, что это возможно, но, очевидно, переполнение стека должно делать это (если они не делают это в нескольких запросах.)

Можно ли как-то подсчитать количество связанных тегов в одном запросе или это нужно сделать в отдельных запросах?

Ответы [ 2 ]

4 голосов
/ 31 октября 2009

Вы можете искать общее количество связанных тегов:

SELECT t2.tagname, count(distinct tb2.linkid) as RelatedLinkCount
FROM TAGS t2
JOIN TAGS_BRIDGE tb2 on t2.tagid = tb2.tagid
JOIN TAGS_BRIDGE tb1 on tb2.linkid = tb1.linkid
JOIN TAGS t ON t.id = tb1.tagid
WHERE t.tagname = 'tag3'
GROUP BY t2.tagname

Начиная с имени тега (t), он ищет ссылки для этого тега (tb1), затем ищет теги, которые разделяют ссылку (tb2). Он ищет имя для связанных тегов (t2) и готово :) Нет необходимости даже присоединяться к таблице LINKS.

1 голос
/ 31 октября 2009

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

ссылки (id, linkName)
теги (id, tagName)
tagsBridge (tagID, linkID)

Я думаю, что вам нужен запрос ...

SELECT T.id, T.tagName, COUNT(TB.tagID) 
FROM tagsBridge TB 
INNER JOIN tags T ON TB.tagID = T.id GROUP BY T.id, T.tagName

О, мои извинения, я неправильно понял вопрос ... то, что я думаю, что вы хотите, то это, хотя он использует вложенные запросы ...

SELECT T.id, T.tagName, COUNT(TB.tagID) 
FROM tagsBridge TB 
INNER JOIN tags T ON TB.tagID = T.id
WHERE TB.tagID IN (
  SELECT tagID FROM tagsBridge WHERE linkID IN (
    SELECT linkID FROM tagsBridge WHERE tagID IN (
      SELECT tagID FROM tagsBridge WHERE linkID = (THE SELECTED LINK)
    )
  )
)
GROUP BY T.id, T.tagName

Этот запрос должен предоставить вам список идентификаторов тегов, имен тегов и количество каждого из них для всех тегов выбранной ссылки и всех тегов, связанных с тегами этой ссылки. Человек, который звучит странно, но я думаю, это то, что ты ищешь.

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