Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak dołączyć trzecią tabelę w mojej instrukcji SQL, która zwraca LICZBA bez utraty elementów licznika 0?

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

To sprzeczne. Mówisz, że jest to sprzężenie lewe, więc rekord MEDICALTESTY nie musi istnieć, ale potem mówisz, że rekord musi w rzeczywistości istnieć i mieć 1 jako PassedMedical. Tak więc twoje lewe sprzężenie staje się w rzeczywistości sprzężeniem wewnętrznym, i podobnie, ponieważ musisz mieć wiersz MEDICALTESTS, musisz również mieć wiersz GRACZE, więc to również staje się sprzężeniem wewnętrznym.

Spróbuj zamiast tego:

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

Nie jestem pewien, jak serwer SQL interpretuje FROM foo LEFT JOIN bar INNER JOIN baz ... chcesz, aby interpretował to jako FROM foo LEFT JOIN (bar INNER JOIN baz). nie dołączaj, po prostu dodaj:

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

Mam nadzieję, że to pomoże pomimo mojego braku znajomości 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. Jak utworzyć tabelę w schemacie SYS w SQL Server?

  2. Rejestruj zmiany rekordów na serwerze SQL w tabeli audytu

  3. Nieprawidłowa składnia w pobliżu słowa kluczowego „GROUP” W SQL

  4. Jaka jest różnica między tabelą upuszczania a tabelą usuwania w programie SQL Server?

  5. sql server 2008 Logowanie nie powiodło się dla użytkownika 'NT AUTHORITY\NETWORK SERVICE'