sql-server - acum - sum sql
Obtener el recuento de etiquetas relacionadas (2)
Hace poco hice esta pregunta para obtener etiquetas relacionadas como en Stack Overflow: ¿cuál es la consulta para obtener "etiquetas relacionadas" como en desbordamiento de pila?
Me gustaría mostrar el recuento como en Desbordamiento de pila, de modo que con cada etiqueta relacionada, ¿cuál es el recuento de esta otra etiqueta en las preguntas con la primera etiqueta?
Debido a que estas consultas tienen distintas en ellos. No creo que sea posible, pero obviamente Stack Overflow debe estar haciendo esto (a menos que lo hagan en múltiples consultas).
¿Hay alguna forma de obtener el recuento de las etiquetas relacionadas en la misma consulta o se debe hacer en consultas separadas?
Puede buscar el recuento total de etiquetas relacionadas:
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
Comenzando con el nombre de la etiqueta (t), busca enlaces para esa etiqueta (tb1), luego busca las etiquetas que comparten un enlace (tb2). Busca el nombre para las etiquetas relacionadas (t2) y está listo :) No es necesario incluso unirse a la tabla LINKS.
Si ese es el caso, entonces podrías usar una consulta como esta ...
enlaces (id, linkName)
tags (id, tagName)
tagsBridge (tagID, linkID)
Creo que la consulta que querrías es esta ...
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
Oh, mis disculpas, entendí mal la pregunta ... lo que creo que quieres es esto, aunque usa consultas anidadas ...
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
Esta consulta debería proporcionarle la lista de identificadores de etiquetas, nombres de etiquetas y un recuento de cada uno para todas las etiquetas del enlace seleccionado y todas las etiquetas asociadas con las etiquetas de ese enlace. Hombre que suena confuso pero creo que es lo que estás buscando.