sql >> Databáze >  >> RDS >> Sqlserver

Jak se připojím ke třetí tabulce v příkazu SQL, který vrací COUNT, aniž by došlo ke ztrátě nulových položek?

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

To je rozporuplné. Říkáte, že jde o levé spojení, takže záznam MEDICALTESTS nemusí existovat, ale pak říkáte, že záznam musí ve skutečnosti existovat a mít 1 jako PassedMedical. Takže vaše levé spojení se ve skutečnosti stane vnitřním spojením a podobně, protože musíte mít řádek MEDICALTESTS, musíte mít také řádek PLAYERS, takže se také stane vnitřním spojením.

Zkuste místo toho toto:

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

Nejste si jisti, jak SQL server interpretuje FROM foo LEFT JOIN bar INNER JOIN baz...chcete, aby to interpretoval jako FROM foo LEFT JOIN (bar INNER JOIN baz). Pokud to nefunguje, použijte místo toho podvýběr; nepřipojujte se, pouze přidejte:

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

Doufám, že to pomůže navzdory mé nedostatečné znalosti SQL Server.



  1. Jak opravit poškozený exportní soubor Oracle (.dmp)?

  2. Jedinečné omezení Oracle SQL A až B, B až A

  3. Postgre SQL ignoruje podmínku filtrování, pokud je hodnota null

  4. (Jedna tabulka) získat řádky bez spojení