задача на случайную выборку

Главные вкладки

Аватар пользователя wanders.32 wanders.32 13 июля 2009 в 19:21

не относится конкретно к друпалу, задача следующая:
есть ноды. к каждой ноде прикреплены 1 или несколько галерей (1 галерея может быть прикреплена к нескольким турам).
в галерее, естественно, изображения.
Задача: минимумом запросов (пусть их может быть несколько), выбрать для каждой ноды случайную картинку из всех галерей, которые привязаны к этой ноде, при чем картинки не должны повторятся для нод, имеющих общие галереи.

я, в общем, делаю аналог мультизагрузки нод, т.к с моим количеством обьектов, если для каждого обьекта отдельно делать node_load, то мускуль повесится)

Комментарии

Аватар пользователя Demimurych Demimurych 13 июля 2009 в 19:48

Разберите логику тех модулей с которыми вы работаете. И составьте запрос самостоятельно.

А то задача из разряда иди туда не знаю куда.

Аватар пользователя Dock@drupal.org Dock@drupal.org 13 июля 2009 в 21:31

А все это дело прекешировано или каждый раз случайно генерится? Если прекешировано, то все довольно просто... Создаете табличку для связи нода-картинка. Начинаем идти по нодам, брать случайную картинку из привязанных галерей и пихать в промежуточный массив с парами нода-картинка. Если картинка уже была привязана, то выбираем другую. Причем процедура обхода должна быть рекурсивной, чтобы в случае если на каком-то этапе все картинки для ноды уже выбраны другими нодами, можно было вернуться на шаг назад. В общем чистая комбинаторика..