наиболее распространенные теги среди выбранных элементов таблицы? - PullRequest
0 голосов
/ 20 июня 2011

У меня есть таблица, похожая на ниже

Таблица вопросов :

Qid  Tags
---  ---------
1    SQL
1    DATABASE
1    ALGORITHM
2    ALGORITHM
2    TAGS
3    SQL
3    SYNTAX
3    DATABASE

Следующее

SELECT * FROM Question table WHERE TAGS='SQL'

отобразит:

Qid  Tags
---  ----
1    SQL
2    SQL
3    SQL

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

Так что, если я посмотрю таблицу вопросов - Qid=1. Результатом будет Qid 3, так как Qid 1 и Qid 3 имеют 2 одинаковых термина, но Qid 2 только как 1 тег, похожий на Qid 1. Если бы я посмотрел Qid 2, он вернул бы Qid 1, поскольку они разделяют 1 тег и Qid 2 и 3 не делятся тегами. И если бы я посмотрел Qid 3, он вернул бы Qid 1, так как у Qid 1 есть 2 тега, которые есть у Qid 3, но у Qid 2 нет тегов, которые есть у Qid 3.

Спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 20 июня 2011
declare @Qid int
set @Qid = 1

select top 1 Q2.Qid, COUNT(*) from Questions Q1
inner join Questions Q2 on Q1.Tags = Q2.Tags
where Q1.Qid = @Qid and Q2.Qid <> @Qid
group by Q2.Qid
order by COUNT(*) desc
0 голосов
/ 20 июня 2011

Возможно, что-то в этом духе? ​​

SELECT Qid, COUNT(*) AS TagsInCommon FROM Questions
WHERE Tags IN (
  SELECT DISTINCT Tags FROM Questions WHERE Qid=1
)
GROUP BY Qid
ORDER BY TagsInCommon DESC

Я не уверен насчет названий полей, но вы поняли ...

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