sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan JOIN jeg en tredje tabel i min SQL-sætning, som returnerer en COUNT uden at miste 0 tæller elementerne?

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

Det er selvmodsigende. Du siger, at det er en venstre join, så MEDICALTESTS-posten behøver ikke eksistere, men siger så, at posten faktisk skal eksistere og have en 1 som bestået Medicinsk. Så din venstre join bliver faktisk en indre join, og på samme måde, da du skal have en MEDICALTESTS række, skal du også have en PLAYERS række, så det bliver også en indre join.

Prøv dette i stedet:

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

Ikke sikker på, hvordan SQL-serveren fortolker FROM foo LEFT JOIN bar INNER JOIN baz...du vil have den til at fortolke det som FROM foo LEFT JOIN (bar INNER JOIN baz). Hvis det ikke virker, skal du bruge et undervalg i stedet; ikke deltage, bare tilføje:

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

Håber dette hjælper på trods af min manglende kendskab til SQL Server.



  1. Udfør erklæring eller køre script?

  2. PostgreSQL-kodningsproblem under udførelse af forespørgsel fra kommandolinjen

  3. Maksimal størrelse for en SQL Server-forespørgsel? IN klausul? Er der en bedre tilgang

  4. Konverter dato i formatet MM/DD/ÅÅÅÅ til MySQL-dato