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

Làm cách nào để trả về kết quả đầu ra của bảng tổng hợp trong MySQL?

Về cơ bản đây một bảng tổng hợp.

Bạn có thể tìm thấy hướng dẫn thú vị về cách đạt được điều này tại đây: http:// www.artfulsoftware.com/infotree/qrytip.php?id=78

Tôi khuyên bạn nên đọc bài đăng này và điều chỉnh giải pháp này cho phù hợp với nhu cầu của bạn.

Cập nhật

Sau khi liên kết trên hiện không còn nữa, tôi cảm thấy có nghĩa vụ cung cấp một số thông tin bổ sung cho tất cả các bạn đang tìm kiếm câu trả lời trục mysql tại đây. Nó thực sự có một lượng lớn thông tin và tôi sẽ không đưa mọi thứ từ đó vào đây (thậm chí nhiều hơn vì tôi không muốn sao chép kiến ​​thức rộng lớn của họ), nhưng tôi sẽ đưa ra một số lời khuyên về cách đối phó với trục lập bảng theo cách sql nói chung với ví dụ từ peku, người đã đặt câu hỏi ngay từ đầu.

Có thể liên kết sẽ sớm hoạt động trở lại, tôi sẽ theo dõi nó.

Cách bảng tính ...

Nhiều người chỉ sử dụng một công cụ như MSExcel, OpenOffice hoặc các công cụ bảng tính khác cho mục đích này. Đây là một giải pháp hợp lệ, chỉ cần sao chép dữ liệu ở đó và sử dụng các công cụ mà GUI cung cấp để giải quyết vấn đề này.

Nhưng ... đây không phải là câu hỏi, và nó thậm chí có thể dẫn đến một số bất lợi, như cách lấy dữ liệu vào bảng tính, chia tỷ lệ có vấn đề, v.v.

Cách SQL ...

Với cái bàn của anh ấy trông giống như thế này:

CREATE TABLE `test_pivot` (
  `pid` bigint(20) NOT NULL AUTO_INCREMENT,
  `company_name` varchar(32) DEFAULT NULL,
  `action` varchar(16) DEFAULT NULL,
  `pagecount` bigint(20) DEFAULT NULL,
  PRIMARY KEY (`pid`)
) ENGINE=MyISAM;

Bây giờ hãy nhìn vào bảng mong muốn của anh ấy / cô ấy:

company_name    EMAIL   PRINT 1 pages   PRINT 2 pages   PRINT 3 pages
-------------------------------------------------------------
CompanyA        0       0               1               3
CompanyB        1       1               2               0

Các hàng ( EMAIL , IN x trang ) giống với điều kiện. Nhóm chính là của company_name .

Để thiết lập các điều kiện, điều này thay vì sử dụng mã <> TRƯỜNG HỢP -tuyên bố. Để nhóm theo thứ gì đó, tốt, hãy sử dụng ... GROUP BY .

SQL cơ bản cung cấp trục xoay này có thể trông giống như sau:

SELECT  P.`company_name`,
    COUNT(
        CASE 
            WHEN P.`action`='EMAIL' 
            THEN 1 
            ELSE NULL 
        END
    ) AS 'EMAIL',
    COUNT(
        CASE 
            WHEN P.`action`='PRINT' AND P.`pagecount` = '1' 
            THEN P.`pagecount` 
            ELSE NULL 
        END
    ) AS 'PRINT 1 pages',
    COUNT(
        CASE 
            WHEN P.`action`='PRINT' AND P.`pagecount` = '2' 
            THEN P.`pagecount` 
            ELSE NULL 
        END
    ) AS 'PRINT 2 pages',
    COUNT(
        CASE 
            WHEN P.`action`='PRINT' AND P.`pagecount` = '3' 
            THEN P.`pagecount` 
            ELSE NULL 
        END
    ) AS 'PRINT 3 pages'
FROM    test_pivot P
GROUP BY P.`company_name`;

Điều này sẽ cung cấp kết quả mong muốn rất nhanh. Nhược điểm chính của cách tiếp cận này, bạn càng muốn có nhiều hàng trong bảng tổng hợp, thì bạn càng cần xác định nhiều điều kiện hơn trong câu lệnh SQL của mình.

Điều này cũng có thể được giải quyết, do đó mọi người có xu hướng sử dụng các câu lệnh, quy trình, bộ đếm đã chuẩn bị sẵn và những thứ tương tự.

Một số liên kết bổ sung về chủ đề này:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tạo mối quan hệ trong MySQL Workbench

  2. Laravel:kết nối động với cơ sở dữ liệu

  3. Làm cách nào để nhập tệp CSV vào bảng MySQL?

  4. Cách tạo cơ sở dữ liệu MySQL bằng API cPanel

  5. Cách lặp qua tập kết quả mysql