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

Làm thế nào để chọn các hàng có mối quan hệ nhất định thông qua một bảng xoay?

  • Bạn có thể GROUP BY trên id và tên người dùng.
  • Sử dụng HAVING mệnh đề với SUM() tổng hợp để lọc ra các trường hợp.
  • Nếu người dùng không làm việc vào một ngày cụ thể, SUM() cho ngày đó sẽ là 0, các lượt tham gia bài đăng.

Đối với trường hợp đầu tiên (hoạt động chính xác tất cả các ngày làm việc trong tuần), Hãy thử:

SELECT u.id, u.name
FROM USERS AS u 
JOIN WORKDAYS AS wd ON wd.user_id = u.id 
JOIN DAYS AS d ON d.id = wd.day_id 
GROUP BY u.id, u.name 
HAVING SUM(d.name = 'monday') 
   AND SUM(d.name = 'tuesday') 
   AND SUM(d.name = 'wednesday') 
   AND SUM(d.name = 'thursday') 
   AND SUM(d.name = 'friday') 
   AND SUM(d.name = 'sunday') = 0 
   AND SUM(d.name = 'saturday') = 0

Đối với trường hợp thứ hai, chỉ cần loại bỏ các điều kiện vào sundaysaturday . Hãy thử:

SELECT u.id, u.name
FROM USERS AS u 
JOIN WORKDAYS AS wd ON wd.user_id = u.id 
JOIN DAYS AS d ON d.id = wd.day_id 
GROUP BY u.id, u.name 
HAVING SUM(d.name = 'monday') 
   AND SUM(d.name = 'tuesday') 
   AND SUM(d.name = 'wednesday') 
   AND SUM(d.name = 'thursday') 
   AND SUM(d.name = 'friday') 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. eclipse - Các thực thể JPA từ các bảng, không có lược đồ nào được liệt kê

  2. Kích hoạt để cập nhật hàng trong bảng khác

  3. Cú pháp DELETE của SQL - Được DBMS liệt kê

  4. Lỗi khi sử dụng ngoại trừ trong một truy vấn

  5. Phát hiện xem một ngày có nằm trong Giờ tiết kiệm ánh sáng ban ngày trong MySql hay không