Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

sử dụng hàm pivot trong mysql để tạo bảng apriori

Đối với truy vấn GROUP_CONCAT của bạn; trong trường hợp của bạn stmt, bạn đang đề cập đến bảng sản phẩm của mình là product chính nó. Nhưng trong truy vấn tham gia của bạn, bạn đang đề cập đến bảng sản phẩm dưới dạng bí danh p . Vì truy vấn group_concat đầu tiên là một phần của truy vấn nối, bạn cần giữ nguyên bí danh của bảng. (Đã thực hiện các thay đổi ở dòng 5)

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'count(case when p.name = ''',  
      product.name,
      ''' then 1 end) AS ',
      replace(product.name, ' ', '')
    )
  ) INTO @pivotsql
from product;

SET @sql = CONCAT('SELECT omd.order_match_id, ', @pivotsql, ' from order_match_detail omd
left join order_match om
  on omd.order_match_id = om.id
left join product p
  on omd.product_id = p.id
  where om.order_status_id in (4, 5, 6, 8)
group by omd.order_match_id');

PREPARE stmt FROM @sql;
EXECUTE stmt;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ví dụ về câu lệnh JDBC - Chèn, Xóa, Cập nhật, Chọn bản ghi

  2. java.sql.SQLSyntaxErrorException:Cột không xác định .JPA Thực thể Sự cố?

  3. Danh sách tham số mệnh đề IN trống trong MySQL

  4. Sao lưu từ xa cơ sở dữ liệu MySQL

  5. Các kết quả khác nhau sử dụng cùng một truy vấn với DB ::raw và Eloquent