sql >> Database >  >> RDS >> Sqlserver

Hoe kan ik lid worden van een derde tabel in mijn SQL-instructie die een COUNT retourneert zonder de 0 count-items te verliezen?

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

Dat is tegenstrijdig. U zegt dat het een left join is, dus het MEDICALTESTS-record hoeft niet te bestaan, maar u zegt dan dat het record wel moet bestaan ​​en een 1 moet hebben als PassedMedical. Dus je linker join wordt in feite een inner join, en aangezien je een MEDICALTESTS-rij moet hebben, moet je ook een PLAYERS-rij hebben, dus dat wordt ook een inner join.

Probeer in plaats daarvan dit:

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

Ik weet niet zeker hoe de SQL-server FROM foo LEFT JOIN bar INNER JOIN baz interpreteert... je wilt dat het dat interpreteert als FROM foo LEFT JOIN (bar INNER JOIN baz). Als dat niet werkt, gebruik dan een subselect; doe niet mee, voeg gewoon toe:

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

Ik hoop dat dit helpt ondanks mijn gebrek aan bekendheid met SQL Server.



  1. Efficiënte manier om volledige outer join in MySQL te simuleren?

  2. Hoe de tabel bij te werken met activeandroid na het toevoegen van een nieuwe kolom

  3. MySql:BESTELLEN DOOR ouder en kind

  4. Relationeel databaseontwerp (MySQL)