it-swarm-ko.tech

무작위 정렬을 사용할 때 중복을 어떻게 제거합니까?

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

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

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

30
Ahmad

뷰 집계 설정을 사용하여 중복 레코드를 제거하여 GROUP BY 또는 DISTINCT를 적용 할 수 있습니다.
1. 가서보기 편집
2. 고급"기타 섹션에서 집계 사용 : 예
삼. FIELDS 또는 FILTER CRITERIA 섹션에서 집계 설정을 선택하여 그룹화하려는 필드 또는 별개.

19
Sithu

뷰에서 고유 한 값을 얻는 간단한 방법은 다음을 수행하는 것입니다.

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

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

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

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

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

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

나는 이것을 고칠 수있는 정말 유용한 해결책을 찾았다. 코드 스 니펫을 DropBucket에 게시했습니다. 기본적으로 Drupal 7) 모든 쿼리 쿼리에서 groupby 절과 필드를 지정하는 쿼리 주석을 확인하는 쿼리 변경 후크를 구현 한 다음 해당 그룹을 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/15

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

5
Patrick

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

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

4
雨滴米

Date fields가 여러 개 있으며 FIRST date의 시작으로 정렬하고 싶습니다. 작동 방식은 다음과 같습니다. Views->advanced->Other: use aggregation: YES 그리고 SORT CRITERIA->Aggregation settings->Aggregation type: COUNT

나는 count가 인스턴스 대신 숫자를 줄 것으로 예상했지만 결과가 뚜렷했습니다 ...

0
Amadeus

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

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;
    }
  }
}

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

0
leymannx

이 다른 방법 중 어느 것도 나를 위해 일한 것은 없지만 Views Random Seed 모듈이 실제로 트릭을 수행했습니다. 그래도 내 문제는 호출기 사용과 관련이 있습니다. 다음은 해당 모듈의 프로젝트 페이지에서 인용 한 것입니다.

시드가 포함 된 임의 순서 처리기를 추가합니다. 상수 정수 인수 N이 sql Rand () 함수에 지정된 경우 시드 값으로 사용되어 반복 가능한 열 값 시퀀스를 생성합니다. 이렇게하면 페이징이 발생하고 항목이 두 번 표시되지 않을 수 있습니다. PHP를 사용하여 커스텀 시드를 계산할 수있어 날짜와 같은 변수를 기반으로 의사 난수를 생성 할 수 있습니다.

0
Mike Pfeiffer

오래된 스레드를 깨우지는 않지만 대답은 Drupal 7 및 노출 된 검색 필터를 사용하는 경우)는 "search : search terms"에서 "검색 점수 제거"를 확인하는 것입니다.

"필터 기준"에서

"검색 : 검색어"추가

"검색 점수 제거"확인

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

저장을 클릭하십시오

0
Bryan