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

Làm cách nào để THAM GIA một bảng thứ ba trong câu lệnh SQL của tôi, bảng này trả về COUNT mà không làm mất các mục đếm 0?

LEFT JOIN MEDICALTESTS m ON p.PlayerId = m.PlayerId
WHERE m.PassedMedical = 1

Thật là mâu thuẫn. Bạn đang nói rằng đó là một phép nối bên trái, vì vậy bản ghi MEDICALTESTS không cần tồn tại, nhưng sau đó nói rằng bản ghi trên thực tế phải tồn tại và có 1 là PassedMedical. Vì vậy, tham gia bên trái của bạn trên thực tế trở thành liên kết bên trong và tương tự như vậy, vì bạn phải có hàng MEDICALTESTS, bạn cũng phải có hàng NGƯỜI CHƠI, do đó, nó cũng trở thành liên kết bên trong.

Hãy thử cái này thay thế:

INNER JOIN MEDICALTESTS m ON p.PlayerId = m.PlayerId and m.PassedMedical = 1

Không chắc máy chủ SQL diễn giải như thế nào thanh FROM foo LEFT JOIN thanh INNER JOIN baz ... bạn muốn nó diễn giải như FROM foo LEFT JOIN (thanh INNER JOIN baz). không tham gia, chỉ cần thêm:

WHERE p.PlayerId IS NULL or (select PassedMedical from MEDICALTESTS m where m.PlayerId=p.PlayerID) = 1 

Hy vọng điều này sẽ hữu ích mặc dù tôi chưa quen với SQL Server.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để đặt 'bắt đầu với' của chuỗi để chọn kết quả truy vấn trong máy chủ SQL?

  2. NOLOCK có phải là mặc định cho câu lệnh SELECT trong SQL Server 2005 không?

  3. Làm cách nào để nhập tệp .bak SQL Server vào MySQL?

  4. Truy xuất hàng tỷ hàng từ máy chủ từ xa?

  5. Cách nhập tệp JSON vào bảng SQL Server