Дубликаты у некоторых нод в Views

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

Аватар пользователя Alexander_Nureyev Alexander_Nureyev 27 ноября 2013 в 22:46

Привет, парни!

У сайта ru.winamp.com возникла одна небольшая проблема: по какой-то причине у некоторых нод в Views появились дубликаты. Хочу заметить, что дубликаты не у всех нод, а лишь у некоторых: у одних их по пять, а у других — по одному.

Раньше их не было. Я не знаю, почему они могли появиться. Distinct помогает, но вьюшка после этого генерируется секунд 50-60. Раньше и без Distinct обходились, и не было дубликатов.

К примеру, возьмем обложку Ace Attorney Investigations (http://ru.winamp.com/skin/ace-attorney-investigations/6805). В каталоге она дублируется пять раз (http://ru.winamp.com/skins). Даже если задать ей только один словарь (категорию), она всё равно будет дублироваться пять раз.

Дубликаты появились во всех вьюшках (плагины, визуализации, скины).

Куда копать, ребята? Аж руки уже опустились и даже возникло желание закрыть сайт ru.winamp.com из-за безвыходности из этой ситуации. Beee

Спасибо за помощь, парни!

Комментарии

Аватар пользователя Alexander_Nureyev Alexander_Nureyev 27 ноября 2013 в 23:19

Понял.

Вот запрос к базе:

SELECT files.fid AS fid, node_node_data_field_file.title AS node_node_data_field_file_title, node_node_data_field_file.nid AS node_node_data_field_file_nid, node_node_data_field_file_node_data_field_image.field_image_fid AS node_node_data_field_file_node_data_field_image_field_image_fid, node_node_data_field_file_node_data_field_image.field_image_list AS node_node_data_field_file_node_data_field_image_field_image_list, node_node_data_field_file_node_data_field_image.field_image_data AS node_node_data_field_file_node_data_field_image_field_image_data, node_node_data_field_file.type AS node_node_data_field_file_type, node_node_data_field_file.vid AS node_node_data_field_file_vid, node_node_data_field_file.created AS node_node_data_field_file_created, (SELECT COUNT(dc.fid) FROM download_count dc WHERE dc.fid = files.fid) AS files_downloads, votingapi_cache_node_node_data_field_file_vote_average.value AS votingapi_cache_node_node_data_field_file_vote_average_value, node_node_data_field_file_node_data_field_description.field_description_value AS node_node_data_field_file_node_data_field_description_field_description_value, node_node_data_field_file_node_data_field_description.field_description_format AS node_node_data_field_file_node_data_field_description_field_description_format FROM files files  LEFT JOIN content_field_file node_data_field_file ON files.fid = node_data_field_file.field_file_fid INNER JOIN node node_node_data_field_file ON node_data_field_file.vid = node_node_data_field_file.vid LEFT JOIN votingapi_cache votingapi_cache_node_node_data_field_file_vote_average ON node_node_data_field_file.nid = votingapi_cache_node_node_data_field_file_vote_average.content_id AND (votingapi_cache_node_node_data_field_file_vote_average.content_type = 'node' AND votingapi_cache_node_node_data_field_file_vote_average.tag = 'vote' AND votingapi_cache_node_node_data_field_file_vote_average.function = 'average') LEFT JOIN content_field_image node_node_data_field_file_node_data_field_image ON node_node_data_field_file.vid = node_node_data_field_file_node_data_field_image.vid LEFT JOIN content_field_description node_node_data_field_file_node_data_field_description ON node_node_data_field_file.vid = node_node_data_field_file_node_data_field_description.vid WHERE node_node_data_field_file.type IN ('skins') ORDER BY files_downloads DESC

Вот настройки вьюхи (надеюсь, то вставил):

$view = new view;
$view->name = 'download2';
$view->description = '';
$view->tag = '';
$view->base_table = 'files';
$view->core = 0;
$view->api_version = '2';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
$handler = $view->new_display('default', 'Defaults', 'default');
$handler->override_option('relationships', array(
  'vid' => array(
    'label' => 'Файл',
    'required' => 1,
    'id' => 'vid',
    'table' => 'node_data_field_file',
    'field' => 'vid',
    'override' => array(
      'button' => 'Override',
    ),
    'relationship' => 'none',
  ),
  'votingapi_cache' => array(
    'label' => 'Vote results',
    'required' => 0,
    'votingapi' => array(
      'value_type' => '',
      'tag' => 'vote',
      'function' => 'average',
    ),
    'id' => 'votingapi_cache',
    'table' => 'node',
    'field' => 'votingapi_cache',
    'relationship' => 'vid',
  ),
));
$handler->override_option('fields', array(
  'title' => array(
    'label' => '',
    'alter' => array(
      'alter_text' => 0,
      'text' => '',
      'make_link' => 0,
      'path' => '',
      'link_class' => '',
      'alt' => '',
      'prefix' => '',
      'suffix' => '',
      'target' => '',
      'help' => '',
      'trim' => 1,
      'max_length' => '30',
      'word_boundary' => 1,
      'ellipsis' => 1,
      'html' => 0,
      'strip_tags' => 0,
    ),
    'empty' => '',
    'hide_empty' => 0,
    'empty_zero' => 0,
    'link_to_node' => 1,
    'exclude' => 0,
    'id' => 'title',
    'table' => 'node',
    'field' => 'title',
    'relationship' => 'vid',
    'override' => array(
      'button' => 'Override',
    ),
  ),
  'field_image_fid' => array(
    'label' => '',
    'alter' => array(
      'alter_text' => 0,
      'text' => '',
      'make_link' => 0,
      'path' => '',
      'link_class' => '',
      'alt' => '',
      'prefix' => '',
      'suffix' => '',
      'target' => '',
      'help' => '',
      'trim' => 0,
      'max_length' => '',
      'word_boundary' => 1,
      'ellipsis' => 1,
      'html' => 0,
      'strip_tags' => 0,
    ),
    'empty' => '',
    'hide_empty' => 0,
    'empty_zero' => 0,
    'link_to_node' => 0,
    'label_type' => 'none',
    'format' => 'image_plain',
    'multiple' => array(
      'group' => 1,
      'multiple_number' => '1',
      'multiple_from' => '',
      'multiple_reversed' => 0,
    ),
    'exclude' => 0,
    'id' => 'field_image_fid',
    'table' => 'node_data_field_image',
    'field' => 'field_image_fid',
    'override' => array(
      'button' => 'Override',
    ),
    'relationship' => 'vid',
  ),
  'created' => array(
    'label' => 'Опубликовано',
    'alter' => array(
      'alter_text' => 0,
      'text' => '',
      'make_link' => 0,
      'path' => '',
      'link_class' => '',
      'alt' => '',
      'prefix' => '',
      'suffix' => '',
      'target' => '',
      'help' => '',
      'trim' => 0,
      'max_length' => '',
      'word_boundary' => 1,
      'ellipsis' => 1,
      'html' => 0,
      'strip_tags' => 0,
    ),
    'empty' => '',
    'hide_empty' => 0,
    'empty_zero' => 0,
    'date_format' => 'custom',
    'custom_date_format' => 'd.m.Y',
    'exclude' => 0,
    'id' => 'created',
    'table' => 'node',
    'field' => 'created',
    'relationship' => 'vid',
  ),
  'downloads' => array(
    'label' => 'Количество загрузок',
    'alter' => array(
      'alter_text' => 0,
      'text' => '',
      'make_link' => 0,
      'path' => '',
      'absolute' => 0,
      'link_class' => '',
      'alt' => '',
      'rel' => '',
      'prefix' => '',
      'suffix' => '',
      'target' => '',
      'help' => '',
      'trim' => 0,
      'max_length' => '',
      'word_boundary' => 1,
      'ellipsis' => 1,
      'html' => 0,
      'strip_tags' => 0,
    ),
    'empty' => '',
    'hide_empty' => 0,
    'empty_zero' => 0,
    'hide_alter_empty' => 0,
    'set_precision' => FALSE,
    'precision' => 0,
    'decimal' => '.',
    'separator' => ',',
    'format_plural' => 0,
    'format_plural_singular' => '1',
    'format_plural_plural' => '@count',
    'prefix' => '',
    'suffix' => '',
    'exclude' => 0,
    'id' => 'downloads',
    'table' => 'files',
    'field' => 'downloads',
    'override' => array(
      'button' => 'Override',
    ),
    'relationship' => 'none',
  ),
  'value' => array(
    'label' => 'Общая оценка',
    'alter' => array(
      'alter_text' => 0,
      'text' => '',
      'make_link' => 0,
      'path' => '',
      'absolute' => 0,
      'link_class' => '',
      'alt' => '',
      'rel' => '',
      'prefix' => '',
      'suffix' => '',
      'target' => '',
      'help' => '',
      'trim' => 0,
      'max_length' => '',
      'word_boundary' => 1,
      'ellipsis' => 1,
      'html' => 0,
      'strip_tags' => 0,
    ),
    'empty' => '',
    'hide_empty' => 0,
    'empty_zero' => 0,
    'hide_alter_empty' => 1,
    'set_precision' => 0,
    'precision' => '0',
    'decimal' => '.',
    'separator' => ',',
    'format_plural' => 0,
    'format_plural_singular' => '1',
    'format_plural_plural' => '@count',
    'prefix' => '',
    'suffix' => '',
    'appearance' => 'fivestar_views_value_display_handler',
    'exclude' => 0,
    'id' => 'value',
    'table' => 'votingapi_cache',
    'field' => 'value',
    'relationship' => 'votingapi_cache',
  ),
  'field_description_value' => array(
    'label' => '',
    'alter' => array(
      'alter_text' => 0,
      'text' => '',
      'make_link' => 0,
      'path' => '',
      'absolute' => 0,
      'link_class' => '',
      'alt' => '',
      'rel' => '',
      'prefix' => '',
      'suffix' => '',
      'target' => '',
      'help' => '',
      'trim' => 1,
      'max_length' => '200',
      'word_boundary' => 1,
      'ellipsis' => 1,
      'html' => 0,
      'strip_tags' => 0,
    ),
    'empty' => '',
    'hide_empty' => 0,
    'empty_zero' => 0,
    'hide_alter_empty' => 1,
    'link_to_node' => 0,
    'label_type' => 'none',
    'format' => 'plain',
    'multiple' => array(
      'group' => TRUE,
      'multiple_number' => '',
      'multiple_from' => '',
      'multiple_reversed' => FALSE,
    ),
    'exclude' => 0,
    'id' => 'field_description_value',
    'table' => 'node_data_field_description',
    'field' => 'field_description_value',
    'relationship' => 'vid',
    'override' => array(
      'button' => 'Override',
    ),
  ),
));
$handler->override_option('sorts', array(
  'downloads' => array(
    'order' => 'DESC',
    'id' => 'downloads',
    'table' => 'files',
    'field' => 'downloads',
    'relationship' => 'none',
  ),
));
$handler->override_option('filters', array(
  'type' => array(
    'operator' => 'in',
    'value' => array(
      'skins' => 'skins',
    ),
    'group' => '0',
    'exposed' => TRUE,
    'expose' => array(
      'use_operator' => 0,
      'operator' => 'type_op',
      'identifier' => 'type',
      'label' => 'Материал: Тип',
      'optional' => 1,
      'single' => 1,
      'remember' => 0,
      'reduce' => 0,
    ),
    'id' => 'type',
    'table' => 'node',
    'field' => 'type',
    'relationship' => 'vid',
    'override' => array(
      'button' => 'Override',
    ),
  ),
  'title' => array(
    'operator' => 'word',
    'value' => '',
    'group' => '0',
    'exposed' => TRUE,
    'expose' => array(
      'use_operator' => 0,
      'operator' => 'title_op',
      'identifier' => 'title',
      'label' => '',
      'optional' => 1,
      'remember' => 0,
    ),
    'case' => 1,
    'id' => 'title',
    'table' => 'node',
    'field' => 'title',
    'relationship' => 'vid',
  ),
  'tid' => array(
    'operator' => 'or',
    'value' => array(
      26 => '26',
      19 => '19',
      14 => '14',
      15 => '15',
      13 => '13',
      20 => '20',
      18 => '18',
      16 => '16',
      21 => '21',
      22 => '22',
      23 => '23',
      24 => '24',
      17 => '17',
      25 => '25',
    ),
    'group' => '0',
    'exposed' => TRUE,
    'expose' => array(
      'use_operator' => 0,
      'operator' => 'tid_op',
      'identifier' => 'tid',
      'label' => '',
      'optional' => 1,
      'single' => 1,
      'remember' => 0,
      'reduce' => 1,
    ),
    'type' => 'select',
    'limit' => TRUE,
    'vid' => '3',
    'id' => 'tid',
    'table' => 'term_node',
    'field' => 'tid',
    'hierarchy' => 1,
    'relationship' => 'vid',
    'reduce_duplicates' => 1,
  ),
));
$handler->override_option('access', array(
  'type' => 'none',
));
$handler->override_option('cache', array(
  'type' => 'time',
  'results_lifespan' => '21600',
  'output_lifespan' => '21600',
));
$handler->override_option('title', 'Обложки (скины) для Winamp');
$handler->override_option('header_format', '1');
$handler->override_option('header_empty', 0);
$handler->override_option('empty', 'К сожалению, поиск не дал результатов. Попробуйте изменить параметры поиска.');
$handler->override_option('empty_format', '1');
$handler->override_option('items_per_page', 9);
$handler->override_option('use_pager', '1');
$handler->override_option('use_more', 0);
$handler->override_option('use_more_always', 0);
$handler->override_option('link_display', 'page_3');
$handler->override_option('distinct', 0);
$handler->override_option('style_plugin', 'grid');
$handler->override_option('style_options', array(
  'grouping' => '',
  'columns' => '3',
  'alignment' => 'horizontal',
  'fill_single_line' => 1,
));
$handler = $view->new_display('page', 'Top Download', 'page_1');
$handler->override_option('path', 'skins/download');
$handler->override_option('menu', array(
  'type' => 'tab',
  'title' => 'Лидеры загрузок',
  'description' => 'Лидеры загрузок',
  'weight' => '1',
  'name' => 'navigation',
));
$handler->override_option('tab_options', array(
  'type' => 'normal',
  'title' => 'Лидеры загрузок',
  'description' => '',
  'weight' => '0',
  'name' => 'primary-links',
));
$handler = $view->new_display('page', 'Top Rating', 'page_2');
$handler->override_option('sorts', array(
  'value' => array(
    'order' => 'DESC',
    'id' => 'value',
    'table' => 'votingapi_cache',
    'field' => 'value',
    'relationship' => 'votingapi_cache',
    'override' => array(
      'button' => 'Использовать установки по умолчанию',
    ),
  ),
));
$handler->override_option('path', 'skins/rating');
$handler->override_option('menu', array(
  'type' => 'tab',
  'title' => 'Лидеры рейтинга',
  'description' => 'Лидеры рейтинга',
  'weight' => '2',
  'name' => 'navigation',
));
$handler->override_option('tab_options', array(
  'type' => 'tab',
  'title' => 'jfkdfjfh',
  'description' => '',
  'weight' => '0',
  'name' => 'navigation',
));
$handler = $view->new_display('page', 'Date Added', 'page_3');
$handler->override_option('sorts', array(
  'created' => array(
    'order' => 'DESC',
    'granularity' => 'second',
    'id' => 'created',
    'table' => 'node',
    'field' => 'created',
    'relationship' => 'vid',
    'override' => array(
      'button' => 'Use default',
    ),
  ),
));
$handler->override_option('path', 'skins/add');
$handler->override_option('menu', array(
  'type' => 'default tab',
  'title' => 'Недавно добавленные',
  'description' => 'Недавно добавленные',
  'weight' => '0',
  'name' => 'navigation',
));
$handler->override_option('tab_options', array(
  'type' => 'normal',
  'title' => 'Недавно добавленные',
  'description' => 'Недавно добавленные',
  'weight' => '0',
  'name' => 'primary-links',
));
$handler = $view->new_display('block', 'Block', 'block_1');
$handler->override_option('filters', array(
  'type' => array(
    'operator' => 'in',
    'value' => array(
      'skins' => 'skins',
    ),
    'group' => '0',
    'exposed' => FALSE,
    'expose' => array(
      'operator' => FALSE,
      'label' => '',
    ),
    'id' => 'type',
    'table' => 'node',
    'field' => 'type',
    'relationship' => 'vid',
    'override' => array(
      'button' => 'Override',
    ),
  ),
  'title' => array(
    'operator' => 'word',
    'value' => '',
    'group' => '0',
    'exposed' => TRUE,
    'expose' => array(
      'use_operator' => 0,
      'operator' => 'title_op',
      'identifier' => 'title',
      'label' => '',
      'optional' => 1,
      'remember' => 0,
    ),
    'case' => 1,
    'id' => 'title',
    'table' => 'node',
    'field' => 'title',
    'relationship' => 'vid',
  ),
));
$handler->override_option('exposed_block', TRUE);
$handler->override_option('block_description', '');
$handler->override_option('block_caching', -1);
$handler = $view->new_display('block', 'Block - Обложки', 'block_2');
$handler->override_option('fields', array(
  'title' => array(
    'label' => '',
    'alter' => array(
      'alter_text' => 0,
      'text' => '',
      'make_link' => 0,
      'path' => '',
      'link_class' => '',
      'alt' => '',
      'prefix' => '',
      'suffix' => '',
      'target' => '',
      'help' => '',
      'trim' => 0,
      'max_length' => '',
      'word_boundary' => 1,
      'ellipsis' => 1,
      'html' => 0,
      'strip_tags' => 0,
    ),
    'empty' => '',
    'hide_empty' => 0,
    'empty_zero' => 0,
    'link_to_node' => 1,
    'exclude' => 0,
    'id' => 'title',
    'table' => 'node',
    'field' => 'title',
    'relationship' => 'vid',
    'override' => array(
      'button' => 'Override',
    ),
  ),
));
$handler->override_option('filters', array(
  'type' => array(
    'operator' => 'in',
    'value' => array(
      'skins' => 'skins',
    ),
    'group' => '0',
    'exposed' => FALSE,
    'expose' => array(
      'operator' => FALSE,
      'label' => '',
    ),
    'id' => 'type',
    'table' => 'node',
    'field' => 'type',
    'relationship' => 'vid',
    'override' => array(
      'button' => 'Override',
    ),
  ),
));
$handler->override_option('title', 'Лидеры загрузок');
$handler->override_option('items_per_page', 5);
$handler->override_option('use_pager', '0');
$handler->override_option('style_plugin', 'default');
$handler->override_option('style_options', array());
$handler->override_option('block_description', '');
$handler->override_option('block_caching', -1);
$handler = $view->new_display('block', 'Блок', 'block_3');
$handler->override_option('sorts', array());
$handler->override_option('filters', array(
  'type' => array(
    'operator' => 'in',
    'value' => array(
      'skins' => 'skins',
    ),
    'group' => '0',
    'exposed' => FALSE,
    'expose' => array(
      'operator' => FALSE,
      'label' => '',
    ),
    'id' => 'type',
    'table' => 'node',
    'field' => 'type',
    'relationship' => 'vid',
    'override' => array(
      'button' => 'Override',
    ),
  ),
  'title' => array(
    'operator' => 'word',
    'value' => '',
    'group' => '0',
    'exposed' => TRUE,
    'expose' => array(
      'use_operator' => 0,
      'operator' => 'title_op',
      'identifier' => 'title',
      'label' => '',
      'optional' => 1,
      'remember' => 0,
    ),
    'case' => 1,
    'id' => 'title',
    'table' => 'node',
    'field' => 'title',
    'relationship' => 'vid',
  ),
));
$handler->override_option('exposed_block', TRUE);
$handler->override_option('block_description', '');
$handler->override_option('block_caching', -1);
$handler = $view->new_display('block', 'Блок', 'block_4');
$handler->override_option('sorts', array());
$handler->override_option('filters', array(
  'type' => array(
    'operator' => 'in',
    'value' => array(
      'skins' => 'skins',
    ),
    'group' => '0',
    'exposed' => FALSE,
    'expose' => array(
      'operator' => FALSE,
      'label' => '',
    ),
    'id' => 'type',
    'table' => 'node',
    'field' => 'type',
    'relationship' => 'vid',
    'override' => array(
      'button' => 'Override',
    ),
  ),
  'tid' => array(
    'operator' => 'or',
    'value' => array(
      13 => '13',
      14 => '14',
      15 => '15',
      16 => '16',
      17 => '17',
      18 => '18',
      19 => '19',
      20 => '20',
      21 => '21',
      22 => '22',
      23 => '23',
      26 => '26',
      24 => '24',
      25 => '25',
    ),
    'group' => '0',
    'exposed' => TRUE,
    'expose' => array(
      'use_operator' => 0,
      'operator' => 'tid_op',
      'identifier' => 'tid',
      'label' => '',
      'optional' => 1,
      'single' => 1,
      'remember' => 0,
      'reduce' => 1,
    ),
    'type' => 'select',
    'limit' => TRUE,
    'vid' => '3',
    'id' => 'tid',
    'table' => 'term_node',
    'field' => 'tid',
    'hierarchy' => 1,
    'relationship' => 'vid',
    'reduce_duplicates' => 1,
    'override' => array(
      'button' => 'Использовать установки по умолчанию',
    ),
  ),
));
$handler->override_option('exposed_block', TRUE);
$handler->override_option('block_description', '');
$handler->override_option('block_caching', -1);