:: urbansheep (urbansheep) wrote,
:: urbansheep
urbansheep

[ utx ] Все категории данной записи в данной категории

Так как tobe нет, а вопрос есть, и не решается, буду формулировать вслух. Суть такова: есть две таблицы — категории (1) и идентификаторы (2) записей. Примерная структура такова:

Категории

ciduserreferercategory
1552behrkbehrk/112407technosophy
1552behrkbehrk/112407infoart
1568behrkbehrk/112974technosophy
1554behrkbehrk/114369quote

PRIMARY cid, UNIQUE-индекс по (user,referer[32],category[32]).

Страницы

iduserreferertitle
6457behrkbehrk/112407упражнения в ТРИЗе: клавиатура
6547behrkbehrk/112974[технология] - Microsoft Next Generation Shell
6754behrkbehrk/114369[цитата] - Хофштадтер

PRIMARY id, UNIQUE-индекс по (user,referer[32]), INDEX по (referer[32]).

Из них надо вытащить (для определённого пользователя), желательно за один ход, следующее:

  • список всех referer с нужной категорией (это делается легко)
  • список title для этих referer (не так просто, но тоже легко, и это, в общем, опционально)
  • список дополнительных категорий, то есть тех, с которыми эти referer встречаются (а вот здесь начинается 3.14)

На выходе хочется получить таблицу примерно такого типа:

categoryreferertitle
technosophybehrk/112407упражнения в ТРИЗе: клавиатура
infoartbehrk/112407упражнения в ТРИЗе: клавиатура
technosophybehrk/112974[технология] - Microsoft Next Generation Shell

Альтернативный вариант: выбрать сначала все referer+title, а потом уже выбрать referer+category через WHERE user="behrk" AND referer IN (список_полученных_referer). Но так как в результате первого запроса с одной и той же category может придти и тысяча строк результата, второй запрос может получиться весьма длинным. А я тут уже попробовал один запрос в консоли, который отрабатывал две с половиной минуты...


Subscribe
  • Post a new comment

    Error

    Comments allowed for friends only

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 22 comments