Làm cách nào để loại bỏ trùng lặp khi sử dụng sắp xếp ngẫu nhiên?


31

Tôi đã tạo một chế độ xem trong đó tôi đang hiển thị tiêu đề nút và logo (trường cck). Trong các đối số tôi đã thông qua tên thuật ngữ phân loại.

Trong kết quả, một nút được hiển thị 2 hoặc 3 lần; Tôi đã kiểm tra hộp kiểm riêng biệt trong cài đặt Truy vấn nhưng điều đó cũng không hoạt động. Tôi đã sử dụng sắp xếp ngẫu nhiên, dường như gây ra sự trùng lặp; Khi tôi loại bỏ các loại ngẫu nhiên, nó hoạt động tốt.

Làm thế nào tôi có thể tránh các bản sao mà không vô hiệu hóa sắp xếp ngẫu nhiên?


Sẽ thật sự tốt nếu ai đó giải thích (các) lý do cho các bản sao và các biện pháp đối phó. có 5 giải pháp 'có thể' làm việc là chỉ bán tối ưu
n3rd

Câu trả lời:


19

Bạn có thể áp dụng NHÓM THEO hoặc DISTINCT bằng cách bật cài đặt tổng hợp lượt xem để xóa các bản ghi trùng lặp.
1. Đi và chỉnh sửa chế độ xem của bạn
2. Trong phần Nâng cao »KHÁC bằng cách bật Sử dụng tổng hợp: Có
3. Trong phần FIELDS hoặc LỌC CRITERIA , chọn và áp dụng cài đặt Tổng hợp cho các trường bạn muốn nhóm theo hoặc phân biệt.


2
Tôi có vấn đề mẫu, tôi cho phép sử dụng tổng hợp và trong tệp của tôi không có distinctchọn, tôi nên chọn loại nào trong loại Tổng hợp?
Yusef

39

Cách đơn giản để đạt được các giá trị riêng biệt trong một khung nhìn là thực hiện như sau:

  1. Đi và chỉnh sửa quan điểm của bạn
  2. Trong phần Nâng cao »KHÁC, nhấp vào" Cài đặt truy vấn "
  3. Đánh dấu vào ô "Khác biệt".

Trong câu hỏi của tôi, tôi đã đề cập rằng tôi đã kiểm tra tùy chọn Phân biệt trong cài đặt Truy vấn.
Ahmad

Eugene và Clive, Đó là công việc, Cảm ơn rất nhiều vì đã chia sẻ điều này.

8

Cách đơn giản để đạt được các giá trị riêng biệt bằng cách sử dụng Chế độ xem là thực hiện như sau:

  1. Đi và chỉnh sửa quan điểm của bạn
  2. Trong phần Nâng cao »KHÁC, nhấp vào" Cài đặt truy vấn "
  3. Đánh dấu vào ô "Khác biệt".

Bạn có thể áp dụng NHÓM THEO hoặc DISTINCT bằng cách bật cài đặt tổng hợp lượt xem để xóa các bản ghi trùng lặp.

  1. Đi và chỉnh sửa quan điểm của bạn
  2. Trong phần Nâng cao »KHÁC bằng cách bật Tổng hợp sử dụng: Có
  3. Trong phần FIELDS hoặc LỌC CRITERIA, chọn và áp dụng cài đặt Tập hợp cho các trường bạn muốn nhóm theo hoặc phân biệt.

5

Tôi biết câu hỏi này đã được trả lời, nhưng đối với một số sử dụng, các giải pháp này không hoạt động. Tuy nhiên, sau khi thực hiện một số nghiên cứu tôi đã tìm thấy một giải pháp phù hợp với nhu cầu của mình.

Tôi tìm thấy một cách giải quyết thực sự hữu ích cho phép tôi khắc phục điều này. Tôi đã đăng đoạn mã lên DropBucket. Về cơ bản, bạn triển khai hook thay đổi truy vấn Drupal 7 để kiểm tra tất cả các truy vấn xem cho các nhận xét truy vấn xác định mệnh đề và trường của nhóm. Sau đó, nó thêm nhóm đó vào truy vấn 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

Các tài liệu tham khảo nguồn là trong các ý kiến ​​trên trang.


Tôi muốn thêm rằng có một số vấn đề đã biết với DISTINCT không hoạt động đúng trong Chế độ xem 3.3 trở lên.
Patrick

1
Thay vì làm như trên, bạn chỉ có thể kiểm tra tên của khung nhìn và sau đó thêm nhóm theo.
Potney Switters

Nó hoạt động rất tốt. Không có giải pháp nào ở đây làm việc cho tôi ngoại trừ việc ... mã hóa luôn
rung

4

Tôi đã từng gặp vấn đề tương tự. Cuối cùng, tôi đã giải quyết nó bằng cách cài đặt mô-đun Views Distinc .

Mối quan hệ hoặc các liên kết khác trong Chế độ xem thường tạo kết quả "trùng lặp". Ví dụ: một nút có trường có nhiều giá trị có thể hiển thị trong Chế độ xem một lần cho mỗi giá trị trong trường đa giá trị. Thật khó chịu và tùy chọn truy vấn SQL "DISTINCT" trong Giao diện người dùng thực sự không giải quyết được vấn đề vì hàng kết quả là khác biệt về mặt kỹ thuật. Lượt xem nhằm mục đích đưa ra một phương thức GUI đơn giản để loại bỏ hoặc tổng hợp các hàng "trùng lặp" này.


0

Có vấn đề với các trường ngày đa giá trị. Các mục được hiển thị thường xuyên như một ngày đã được nhập. Không có giải pháp nào khác ở đây đề cập đến làm việc cho tôi. Nhưng sau đó tôi tìm thấy một giải pháp D6 vẫn hoạt động trong D7 đó .

hook_views_pre_render(&$view)là từ kỳ diệu. Trong ví dụ, nó chỉ giới hạn ở một màn hình nhất định của một chế độ xem nhất định. Hy vọng nó giúp.

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: Thật không may, điều này sẽ trừ đi số lượng các mục trùng lặp khỏi chế độ xem nếu giới hạn được đặt. Nếu ai đó có thể tìm thấy một giải pháp cho điều này, xin vui lòng bình luận!


0

Không đánh thức một chủ đề cũ, nhưng câu trả lời (nếu sử dụng Drupal 7 và bộ lọc tìm kiếm bị lộ) là kiểm tra "xóa điểm tìm kiếm" trong "tìm kiếm: cụm từ tìm kiếm".

Trong "Tiêu chí lọc"

Thêm "Tìm kiếm: Điều khoản tìm kiếm"

Kiểm tra "Xóa điểm tìm kiếm"

Nhấp vào "Áp dụng (tất cả màn hình)"

Nhấp vào để lưu


0

Không có phương pháp nào khác làm việc cho tôi, nhưng mô-đun Views Random Seed thực sự đã làm được điều đó. Mặc dù vậy, các vấn đề của tôi liên quan nhiều hơn đến việc sử dụng máy nhắn tin. Đây là một trích dẫn từ trang dự án của mô-đun đó:

Thêm một xử lý thứ tự ngẫu nhiên với hạt giống. Nếu một đối số nguyên không đổi N được chỉ định trong hàm RAND () sql, nó được sử dụng làm giá trị seed, tạo ra một chuỗi lặp lại các giá trị cột. Điều này làm cho nó có thể có phân trang và không có các mục hiển thị hai lần. Cũng có thể tính toán một hạt giống tùy chỉnh bằng PHP, cho phép bạn tạo các số randoms giả dựa trên các biến như ngày trong ngày.


0

Tôi có nhiều Date fieldsvà muốn sắp xếp theo lúc bắt đầu FIRST date... Đây là cách nó hoạt động: Trong Views->advanced->Other: use aggregation: YES Và sau đó: SORT CRITERIA->Aggregation settings->Aggregation type: COUNT

Tôi dự kiến ​​sẽ countcho tôi số thay vì ví dụ, nhưng nó làm cho kết quả khác biệt ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.