무작위 정렬을 사용할 때 중복을 어떻게 제거합니까? 작동하지 않습니다. 나는

노드 제목과 로고 (cck 필드)를 표시하는 뷰를 만들었습니다. 논쟁에서 나는 분류 용어 이름을 전달했습니다.

결과적으로 노드는 두세 번 표시됩니다. 쿼리 설정에서 고유 확인란을 이미 선택했지만 작동하지 않습니다. 나는 무작위 정렬을 사용했는데, 이는 중복을 일으키는 것으로 보인다. 무작위 정렬을 제거하면 정상적으로 작동합니다.

무작위 정렬을 비활성화하지 않고 어떻게 중복을 피할 수 있습니까?



답변

뷰 집계 설정을 사용하여 중복 레코드를 제거하여 GROUP BY 또는 DISTINCT를 적용 할 수 있습니다.
1.보기로 이동하고 편집하십시오
. 2. 집계 사용 : 예를 선택 하여 고급»기타 섹션
에서 필드 또는 필터 기준 섹션에서 그룹화하거나 구별 할 필드에 대한 집계 설정 을 선택하고 적용하십시오 .


답변

뷰에서 고유 한 값을 얻는 간단한 방법은 다음과 같습니다.

  1. 가서보기 편집
  2. 고급»기타 섹션에서 “쿼리 설정”을 클릭하십시오.
  3. “고유”확인란을 선택하십시오.

답변

뷰를 사용하여 고유 한 값을 얻는 간단한 방법은 다음을 수행하는 것입니다.

  1. 가서보기 편집
  2. 고급»기타 섹션에서 “쿼리 설정”을 클릭하십시오.
  3. “고유”확인란을 선택하십시오.

뷰 집계 설정을 사용하여 중복 레코드를 제거하여 GROUP BY 또는 DISTINCT를 적용 할 수 있습니다.

  1. 가서보기 편집
  2. 고급 사용»기타 섹션에서 집계 사용을 활성화하여 : 예
  3. 필드 또는 필터 기준 섹션에서 그룹화하거나 구별 할 필드에 대한 집계 설정을 선택하고 적용하십시오.

답변

나는이 질문에 이미 답변되었지만, 일부 솔루션의 경우 작동하지 않는다는 것을 알고 있습니다. 그러나 몇 가지 연구를 한 후 내 요구에 맞는 솔루션을 찾았습니다.

나는 이것을 고칠 수있는 정말 유용한 해결책을 찾았다. 코드 스 니펫을 DropBucket에 게시했습니다. 기본적으로 모든 뷰 쿼리에서 groupby 절과 필드를 지정하는 쿼리 주석을 검사하는 Drupal 7 쿼리 변경 후크를 구현합니다. 그런 다음 해당 그룹을 SQL 쿼리에 추가합니다.

/**
 *  Found this trick on theoleschool.com.
 *
 *  Description: Allows the view developer to specify the query
 *  group by action in the query comments. Great way to force the
 *  removal of duplicates.
 *
 *  Just go into your query comments and type in "groupby:" with
 *  that colon followed by the field you want to group by.
 *
 *  Examples...
 *  groupby:node.nid
 *  groupby:file_managed_file_usage.fid
 *
 *  Ref-Comment: http://theoleschool.com/comment/496#comment-496
 *  Ref-Article: http://theoleschool.com/blog/using-hookviewsalter-add-group-statement
 */
function mymodule_query_alter(QueryAlterableInterface $query) {
  if ($query->hasTag('views')) {
    static $count;
    $view =& $query->getMetaData('view');

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

      if (strlen($field) > 0) {
        $query->groupBy($field);
      }
    }
  }
}

http://dropbucket.org/node/153

소스 참조는 페이지의 주석에 있습니다.


답변

나는 같은 문제가 있었다. 궁극적으로 Views Distinct 모듈 을 설치하여 해결했습니다 .

뷰의 관계 또는 다른 조인은 종종 “중복”결과를 생성합니다. 예를 들어, 여러 값을 가진 필드가있는 노드는 다중 값 필드의 값당 한 번보기에 표시 될 수 있습니다. 실망스럽고 뷰 UI의 “DISTINCT”SQL 쿼리 옵션은 결과 행이 기술적으로 다르기 때문에 실제로 문제를 해결하지 않습니다. 뷰 Distinct 는 이러한 “중복”행을 제거하거나 집계하는 간단한 GUI 방법을 제공하는 것을 목표로합니다.


답변

다중 가치 날짜 필드에 문제가있었습니다. 날짜가 입력 될 때마다 항목이 표시되었습니다. 여기에 언급 된 다른 솔루션 중 어느 것도 나를 위해 일하지 않았습니다. 그러나 나는 여전히 D7에서 작동하는 D6 솔루션을 찾았 습니다 .

hook_views_pre_render(&$view)마법의 단어입니다. 이 예에서는 하나의 특정보기 만 표시하도록 제한되어 있습니다. 도움이 되길 바랍니다.

function MYMODULE_views_pre_render(&$view) {
  $used_nids = array();

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

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

      foreach ($view->result as $row) {

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

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

편집 : 불행히도 이것은 제한이 설정된 경우보기에서 중복 항목 수를 뺍니다. 누군가가 이것에 대한 해결책을 찾으면 의견을 말하십시오!


답변

오래된 스레드를 깨우지는 않지만 Drupal 7 및 노출 된 검색 필터를 사용하는 경우 “search : search terms”에서 “검색 점수 제거”를 확인하십시오.

“필터 기준”에서

“검색 : 검색어”추가

“검색 점수 제거”확인

“적용 (모든 디스플레이)”을 클릭하십시오.

저장을 클릭하십시오