Изменения

Перейти к: навигация, поиск

Vitaphoto: Облака тегов

331 байт добавлено, 16:17, 5 ноября 2009
Нет описания правки
<code-sql>SELECT DISTINCT tp_tag1
FROM (SELECT DISTINCT t1.tag ti_tag tp_tag1, t2.tag ti_tag tp_tag2 FROM tag_image t1 LEFT JOIN tag_image t2 ON t2.ti_image=t1.ti_image AND t2.ti_tag!=t1.ti_tag) tag_pairJOIN (SELECT t1.tag ti_tag tpi_tag1, t1.ti_image tpi_image, t2.tag ti_tag tpi_tag2 FROM tag_image t1 LEFT JOIN tag_image t2 ON t2.ti_image=t1.ti_image AND t2.ti_tag!=t1.ti_tag) tag_image_pairtag_pair_image
ON tpi_tag1=tp_tag1 AND (tpi_tag2!=tp_tag2 OR tp_tag2 IS NULL)
SELECT DISTINCT ti_tag FROM tag_image WHERE ti_tag NOT IN (
SELECT tp_tag1 FROM (SELECT DISTINCT t1.tag ti_tag tp_tag1, t2.tag ti_tag tp_tag2 FROM tag_image t1 LEFT JOIN tag_image t2 ON t2.ti_image=t1.ti_image AND t2.ti_tag!=t1.ti_tag) tag_pair
LEFT JOIN tag_image h1 ON h1.ti_tag IN (tp_tag1, tp_tag2)
LEFT JOIN tag_image n1 ON n1.ti_image=h1.ti_image AND n1.ti_tag != h1.ti_tag AND n1.ti_tag IN (tp_tag1, tp_tag2)
WHERE n1.ti_tag IS NULL
)</code-sql>
 
Самое интересное, что если таблицы <tt>tag_pair</tt> и <tt>tag_pair_image</tt> материализовать и поддерживать в актуальном состоянии, такое решение выполняется за вполне приемлемое время.
[[Категория:Разработка]]

Навигация