phpMyAdmin
 sql >> Cơ Sở Dữ Liệu >  >> Database Tools >> phpMyAdmin

Câu lệnh SQL để hiển thị trong nhóm cột nhất định

Ban đầu, đây là những gì tôi nghĩ ra:

SELECT s.date, s.day, COALESCE(GROUP_CONCAT(bm.worker SEPARATOR ' '),'') as Morning,COALESCE(GROUP_CONCAT(be.worker SEPARATOR ' '),'') as Evening
FROM schedule s LEFT JOIN 
block bm ON s.id = bm.schedule_id AND bm.shift=1 LEFT JOIN 
block be ON s.id = be.schedule_id AND be.shift=2
GROUP BY s.date,s.day

Kết quả:

DATE        DAY       MORNING       EVENING
22/09/2014  Monday    Ahmad Abdul   Faris Faris
23/09/2014  Tuesday                 Iqbal

Kết quả là Fiddle .

Như bạn có thể thấy trường Buổi tối chứa Faris hai lần . Vì vậy, tôi đã sử dụng hai truy vấn và kết hợp các kết quả đó. Như thế này:

SELECT T1.date,T1.day,COALESCE(T1.Morning,'') as Morning,COALESCE(T2.Evening,'') as Evening FROM
    (SELECT s.date, s.day, GROUP_CONCAT(bm.worker SEPARATOR ' ') as Morning
     FROM schedule s LEFT JOIN 
     block bm ON s.id = bm.schedule_id AND bm.shift=1
     GROUP BY s.date,s.day) T1
  JOIN
    (SELECT s.date, s.day,GROUP_CONCAT(be.worker SEPARATOR ' ') as Evening
     FROM schedule s LEFT JOIN 
     block be ON s.id = be.schedule_id AND be.shift=2
     GROUP BY s.date,s.day) T2 
  ON T1.Date=T2.Date AND T1.Day=T2.Day

Kết quả:

DATE        DAY      MORNING        EVENING
22/09/2014  Monday   Ahmad Abdul    Faris
23/09/2014  Tuesday                 Iqbal

Xem kết quả trong SQL Fiddle .

Giải thích:

Chúng tôi đang chọn cho Buổi sáng và Buổi tối riêng biệt, sau đó chúng tôi sẽ ghép hai bảng này với ngày và ngày. Và cuối cùng kết quả được tìm nạp từ truy vấn đã kết hợp.

GROUP_CONCAT được sử dụng để nhóm các trường có cùng ngày và ngày. Chúng tôi có thể sử dụng SEPARATOR ' ' cho không gian làm dấu phân cách. Nếu bạn xóa SEPARATOR ' ' , bạn sẽ nhận được kết quả được phân tách bằng dấu phẩy (,).

COALESCE được sử dụng để thay thế các giá trị rỗng bằng chuỗi trống ('' ).



  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. MySQL lưu trữ các tệp cơ sở dữ liệu ở đâu?

  2. Thêm chỉ mục vào cột trong mysql

  3. Truy vấn SQL không hoạt động trên phpMyAdmin vì tôi gặp lỗi

  4. mysqli_real_connect ():(HY000 / 2002):Không có tệp hoặc thư mục như vậy

  5. Cách ẩn cơ sở dữ liệu information_schema khỏi phpmyadmin