Drupal 6 & Views 2 - поле DISTINCT - PullRequest
       40

Drupal 6 & Views 2 - поле DISTINCT

1 голос
/ 04 ноября 2010

Я использую модуль Feeds для импорта большого количества узлов Feed Item.Из-за неправильной подачи файла я получаю много дубликатов.Я использую View для отображения этих узлов, и мне нужно иметь возможность добавить фильтр DISTINCT в поле «Node: Post Date», поэтому я получаю только 1 результат для каждой пост-даты.

IЯ также расскажу, как решить проблему в источнике (я не хочу, чтобы все эти дубликаты были в первую очередь), но сама по себе это интересная проблема - я не могу найти способ добавить DISTINCTфильтр по полю, отличному от идентификатора узла (который имеет собственную опцию в поле Основные настройки представления).

Ответы [ 4 ]

2 голосов
/ 22 декабря 2010

Я нашел отличную статью о хорошем способе изменения SQL-запросов, сгенерированных из представлений перед их выполнением: http://echodittolabs.org/blog/2010/06/group-views. Я использовал это для добавления суффикса предложения GROUP BY к концу запроса (действительно хорошим, чистым и универсальным способом).

Кроме того, я также нашел способ решить проблему импорта большого количества дублирующихся элементов фида, подробности о которых здесь: http://drupal.org/node/661314#comment-3667228. Он принимает довольно экстремальный подход (удаляя все элементы перед каждым обновлением), но это единственное решение для некоторых неприятных искаженных каналов.

Я держался за некоторую неоткрытую особенность Views, которая позволяет вам делать этоно я не думаю, что есть один - возможно, в следующей версии;)

1 голос
/ 13 декабря 2011

Есть два варианта решения: \

  • применить этот патч
    ИЛИ
  • hook_views_query_alter=> просто вставьте

    $query->distinct = 1;
    $query->no_distinct = 'views_groupby';

0 голосов
/ 04 декабря 2013

Мы обнаружили эту проблему в представлении drupal 6.x - 7 или 150 элементов были продублированы один или два раза.Понятия не имею почему.Проблема появилась только для анонимных пользователей.К счастью, views 6.x.2.16 предоставляет «отличную» настройку в базовых настройках, я установил на Yes и избавился от дубликатов.

0 голосов
/ 04 ноября 2010

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

...