it-swarm-vi.com

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?

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?

30
Ahmad

Bạn có thể áp dụng GROUP BY 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 Sử dụng tổng hợp: Có
[.__.] 3. Trong các trường [~ # ~] [~ # ~] 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.

19
Sithu

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".
39
Eugene Fidelin

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 GROUP BY 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.
8
no name

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 a Drupal 7 truy vấn thay đổi hook để kiểm tra tất cả các truy vấn xem đối với 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/15

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

5
Patrick

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 Lượt xem .

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 là bực bội 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.

4
雨滴米

Tôi có nhiều Date fields và muốn sắp xếp theo bắt đầu của 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 mong đợi count sẽ cho tôi số thay vì ví dụ, nhưng nó làm cho kết quả khác biệt ...

0
Amadeus

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ừ ma thuật. 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 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
leymannx

Không có phương pháp nào khác làm việc cho tôi, nhưng Lượt xem ngẫu nhiên mô-đun thực sự đã lừa. 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 N không đổi được chỉ định trong hàm sql Rand (), thì 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ố giả giả dựa trên các biến như ngày trong ngày.

0
Mike Pfeiffer

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
Bryan