Loading ...
[Plus récent] [Plus ancien] [Meilleur rang] [Mauvais rang]

PCR Postit

PHP

::

Requete SQL pour les liens en relations

[Trackback]
Date : 2008-01-15@11:36:08
Rang : 0

Cette requete permet de trouver pour un article donné des articles similaires en se basant sur les tags. Elle retourne les articles qui ont 50% des tags qui correspondent dans les deux sens.

Dans l'exemple suivant on traite l'article avec pour ID 100.

SELECT

ART_ID,

COUNT(*) AS MATCHES,

(

        SELECT COUNT( * )

        FROM ARTICLES_TAGS

        WHERE t1.ART_ID = ART_ID

        GROUP BY ART_ID

) AS TAG_COUNT

FROM ARTICLES_TAGS t1

WHERE TAG_ID

IN

(

        SELECT TAG_ID

        FROM ARTICLES_TAGS

        WHERE ART_ID =100

)

AND ART_ID !=100

GROUP BY ART_ID

HAVING

(MATCHES /(SELECT greatest(COUNT(*),1) FROM ARTICLES_TAGS WHERE ART_ID =100 GROUP BY ART_ID ) >= 0.5)

AND MATCHES >=TAG_COUNT/(1/0.5)