Изменения

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

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

39 байтов добавлено, 00:28, 7 ноября 2009
SQL для реализации идеи № 1
Есть таблица-отношение <tt>'''tag_image'''</tt> с двумя полями «ID тега» (<tt>'''ti_tag'''</tt>) и «ID изображения» (<tt>'''ti_image'''</tt>). Каждая строчка означает, что фотография с соответствующим ID имеет соответствующий тег.
Так вот, чтобы отвечать на наш вопрос, сначала нужно создать таблицу<tt>'''tag_pair'''</tt>, содержащую сочетания тегов (A, B), если существует хотя бы одна фотография, имеющая теги A и B, и сочетание (A, 0), если существует фотография, имеющая только тег A и ни одного тега кроме него:
<code-sql>CREATE TABLE tag_pair AS
OR t3.tp_tag1=t0.tp_tag2 AND t3.tp_tag2!=t0.tp_tag1)</code-sql>
Соответственно, чтобы ограничить отдаваемое множество набором тегов, встречающихся вместе с определённым тегом (например, с ID=123), нужно просто добавить ещё одно соединение с таблицей <tt>'''tag_pair'''</tt>:
<code-sql>SELECT DISTINCT t0.tp_tag1 FROM tag_pair t0

Навигация