avg acum sql-server tags

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.