Как удалить дубликаты при использовании случайного сортировки?

Я создал представление, где я показываю название узла и логотип (поле cck). В аргументах я передал название таксономии.

В результате узел отображает 2 или 3 раза; Я уже проверил отдельный флажок в настройках запроса, но это также не работает. Я использовал случайный сортировку, которая, похоже, вызывает дубликаты; когда я удаляю случайный сортировку, он отлично работает.

Как избежать дубликатов без отключения случайной сортировки?

30 голосов | спросил Ahmad 30 J000000Monday12 2012, 09:23:18

9 ответов


18

Вы можете применить GROUP BY или DISTINCT, включив параметры агрегации просмотров для удаления повторяющихся записей.
1. Перейдите и отредактируйте свое мнение
2. В разделе Дополнительно> ДРУГИЕ включите Использовать агрегацию: Да
3. В разделе FIELDS или ФИЛЬТР КРИТЕРИИ выберите и примените Настройки агрегирования , для которых вы хотите группировать или выделять.

ответил Sithu 30 J000000Monday12 2012, 10:53:28
39

Простым способом достижения различных значений в представлении является следующее:

  1. Перейдите и отредактируйте свое мнение
  2. В расширенном разделе «ДРУГИЕ разделы» нажмите «Настройка запроса»
  3. Отметьте флажок «Отличный».
ответил Eugene Fidelin 30 J000000Monday12 2012, 11:35:26
8

Простым способом достижения различных значений с помощью Views является следующее:

  1. Перейдите и отредактируйте свое мнение
  2. В расширенном разделе «ДРУГИЕ разделы» нажмите «Настройка запроса»
  3. Отметьте флажок «Отличный».

Вы можете применить GROUP BY или DISTINCT, включив параметры агрегации просмотров для удаления повторяющихся записей.

  1. Перейдите и отредактируйте свое мнение
  2. В расширенном разделе «ДРУГИЕ», включив «Использовать агрегацию»: «Да»
  3. В разделе FIELDS или FILTER CRITERIA выберите и примените параметры агрегации, для которых вы хотите группировать или выделять поля.
ответил no name 30 AM000000100000004031 2012, 10:41:40
5

Я знаю, что на этот вопрос уже был дан ответ, но для некоторых из них эти решения не работают. Однако после некоторых исследований я нашел решение, которое работает для моих нужд.

Я нашел действительно полезное обходное решение, которое позволило мне исправить это. Я опубликовал фрагмент кода для DropBucket. В основном вы реализуете ссылку на запрос Drupal 7, которая проверяет все запросы просмотров для комментариев запросов, которые определяют предложение group_ и поле. Затем он добавляет эту группу к запросу SQL.

  /**
 * Нашел этот трюк на theoleschool.com.
 *
 * Описание: Позволяет разработчику представления указать запрос
 * группа по действию в комментариях запроса. Отличный способ заставить
 * удаление дубликатов.
 *
 * Просто зайдите в свои комментарии и введите «groupby:» с
 * этот двоеточие, за которым следует поле, которое вы хотите группировать.
 *
 *  Примеры...
 * groupby: node.nid
 * groupby: file_managed_file_usage.fid
 *
 * Ref-Comment: http://theoleschool.com/comment/496#comment-496
 * Ссылка: http://theoleschool.com/blog/using-hookviewsalter-add-group-statement
 * /
function mymodule_query_alter (QueryAlterableInterface $ query) {
  if ($ query-> hasTag ('views')) {
    статический счетчик $;
    $ view = & amp; $ Query- & GT; GetMetadata ( 'вид');

    if (strstr ($ groupby = $ view-> query-> options ['query_comment'], 'groupby')) {
      list ($ action, $ field) = explode (':', $ groupby);

      if (strlen ($ field)> 0) {
        $ Query- & GT; группаЯ ($ поля);
      }
    }
  }
}
 

http://dropbucket.org/node/153

Исходная ссылка находится в комментариях на странице.

ответил pthurmond 28 FebruaryEurope/MoscowbThu, 28 Feb 2013 23:21:08 +0400000000pmThu, 28 Feb 2013 23:21:08 +040013 2013, 23:21:08
4

У меня была та же проблема. В конечном итоге я решил это, установив модуль Views Distinct .

  

Отношения или другие объединения в представлениях часто создают «повторяющиеся» результаты. Например, узел с полем, имеющим несколько значений, может отображаться в представлении один раз за значение в многозначном поле. Это расстраивает, и опция SQL DISTINCT SQL в интерфейсе Views не решает проблему, потому что строка результата технически различна. Представления Distinct направлены на то, чтобы дать простой метод GUI для удаления или объединения этих «повторяющихся» строк.

ответил 雨滴米 8 +04002014-10-08T10:48:01+04:00312014bEurope/MoscowWed, 08 Oct 2014 10:48:01 +0400 2014, 10:48:01
0

Были проблемы с несколькими полями даты значения. Элементы отображались так часто, как дата была введена. Ни один из других здесь упомянутых решений не работал для меня. Но потом я нашел решение D6, которое все еще работает в D7 там .

hook_views_pre_render (& amp; $ view) - это волшебное слово. В этом примере оно ограничено одним определенным отображением только одного определенного вида. Надеюсь, что это поможет.

  функция MYMODULE_views_pre_render (& amp; $ view) {
  $ used_nids = array ();

  if ($ view-> name == 'events') {

    if ($ view-> current_display == 'page_2') {

      foreach ($ view-> результат в виде $ row) {

        if (! in_array ($ row-> nid, $ used_nids)) {

          $ new_view_result [] = $ row;
          $ used_nids [] = $ row-> nid;
        }
      }
      $ view-> result = $ new_view_result;
    }
  }
}
 

РЕДАКТИРОВАТЬ: К сожалению, это вычитает количество повторяющихся элементов из представления, если был установлен лимит. Если кто-то может найти решение для этого, прокомментируйте!

ответил leymannx 3 MarpmMon, 03 Mar 2014 18:09:33 +04002014-03-03T18:09:33+04:0006 2014, 18:09:33
0

Не просыпаться старый поток, но ответ (если используется Drupal 7 и открытый фильтр поиска) заключается в том, чтобы проверить «удалить оценку поиска» в разделе «поиск: условия поиска».

В разделе «Критерии фильтра»

Добавить "Поиск: Условия поиска"

Установите флажок «Удалить оценку поиска»

Нажмите «Применить (все дисплеи)»

Нажмите «Сохранить»

ответил Bryan 18 Jam1000000amSat, 18 Jan 2014 00:29:05 +040014 2014, 00:29:05
0

Ни один из этих других методов не работал для меня, но Views Random Seed действительно сделал трюк. Хотя, мои проблемы были более связаны с использованием пейджера. Вот цитата из страницы проекта этого модуля:

  

Добавляет обработчик случайного порядка с семенем. Если в функции sql RAND () указан постоянный целочисленный аргумент N, он используется как начальное значение, которое создает повторяемую последовательность значений столбцов. Это позволяет иметь пейджинг и не отображать предметы дважды.   Также можно вычислить пользовательское семя, используя PHP, позволяя создавать псевдо-числа randoms на основе таких переменных, как дата дня.

ответил Mike Pfeiffer 4 +04002013-10-04T03:00:41+04:00312013bEurope/MoscowFri, 04 Oct 2013 03:00:41 +0400 2013, 03:00:41
0

У меня есть несколько полей Дата и вы хотите сортировать по началу FIRST date ... Вот как это работает: В Views-> advanced-> Other: использование агрегации: YES А потом: СОРТ-КРИТЕРИИ-> Параметры агрегирования-> Тип агрегации: COUNT

Я ожидал count , чтобы дать мне номер вместо экземпляра, но сделал результат отличным ...

ответил Amadeus 16 PMpThu, 16 Apr 2015 19:54:36 +030054Thursday 2015, 19:54:36

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132