Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да се ПРИСЪЕДИНЯ към трета таблица в моя SQL израз, който връща COUNT, без да загубя 0 броя елементи?

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

Това е противоречиво. Вие казвате, че това е ляво съединение, така че записът MEDICALTESTS не трябва да съществува, но след това казвате, че записът трябва в действителност да съществува и да има 1 като PassedMedical. Така че вашето ляво съединение всъщност става вътрешно съединение и по същия начин, тъй като трябва да имате ред MEDICALTESTS, трябва да имате и ред PLAYERS, така че това също става вътрешно съединение.

Опитайте това вместо това:

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

Не съм сигурен как SQL сървърът интерпретира FROM foo LEFT JOIN bar INNER JOIN baz... искате да интерпретира това като FROM foo LEFT JOIN (bar INNER JOIN baz). Ако това не работи, използвайте подизбор вместо това; не се присъединявайте, просто добавете:

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

Надявам се това да помогне въпреки липсата ми на познания за 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. Улавяне на множество съобщения за грешка от един израз в TRY CATCH

  2. Дата на обработка в SQL Server

  3. Как мога да попълня колона с произволни числа в SQL? Получавам една и съща стойност във всеки ред

  4. Как идентифицирате последователности от модели на записи в записи, използващи TSQL?

  5. Как да конвертирате от един формат на дата в друг в Microsoft SQL сървър?