sql >> データベース >  >> RDS >> Sqlserver

0 カウント項目を失わずに COUNT を返す SQL ステートメントで 3 番目のテーブルを結合するにはどうすればよいですか?

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

    それは矛盾しています。あなたはそれが左結合であると言っているので、MEDICALTESTS レコードが存在する必要はありませんが、レコードが実際に存在し、PassedMedical として 1 を持っている必要があると言っています。したがって、左結合は実際には内部結合になり、同様に、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. MySQLからPDOへのコードの変更

    2. INSERT...SELECTステートメントをアトミックにする

    3. Oracle 11g XEにJavaをインストールする方法はありますか?

    4. DateTime値を管理するSQLAnsi