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

Bảng tổng hợp với 3 bảng

Có vẻ như bạn có thể có một số khoản phí không xác định mà bạn muốn chuyển thành các cột, nếu đúng như vậy thì bạn sẽ muốn sử dụng các câu lệnh đã chuẩn bị để truy vấn điều này:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'max(case when f.fee_name = ''',
      f.fee_name,
      ''' then f.fee_amount else 0 end) AS `',
      f.fee_name, '`'
    )
  ) INTO @sql
FROM fee f;

SET @sql = CONCAT('SELECT s.school_id, ', @sql, '
                    , sum(f.fee_amount) as Total
                  FROM students s
                  LEFT JOIN stud_fee sf
                    on s.id = sf.stud_id
                  LEFT JOIN fee f
                    on sf.fee_id = f.id
                   GROUP BY s.school_id');


PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

Xem SQL Fiddle with Demo



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL chèn từ một vùng văn bản đến nhiều hàng

  2. Chọn tất cả các bản ghi từ một bảng không tồn tại trong bảng khác trong Laravel 5.1

  3. các thành phố và khoảng cách theo vĩ độ-kinh độ

  4. MySQL - Cập nhật nhiều giá trị và Ở ĐÂU TRONG

  5. swing lấy dữ liệu từ mysql db sang textfield