sql >> Database >  >> RDS >> PostgreSQL

Probleem bij het construeren van een where-clausule om null/0-waarden op te nemen

Verplaats de teacher_students.teacher_id = 1 controleer vanaf de WHERE clausule aan de samenvoeging ON clausule.

Wanneer een voorwaarde die verwijst naar een tabel aan de rechterkant van een LEFT JOIN wordt in de WHERE-clausule geplaatst, de LEFT JOIN wordt geannuleerd en fungeert als een INNER JOIN .

SELECT count(teacher_students.student_id) AS rcount      <--- changed
     , questions.id 
FROM "questions"
  LEFT JOIN answers 
    ON answers.question_id = questions.id
  LEFT JOIN teacher_students 
    ON teacher_students.student_id = answers.student_id
    AND teacher_students.teacher_id = 1
WHERE questions.test_id = 1

GROUP BY questions.id 
ORDER BY questions.id



  1. Voordelen van pdo boven mysql_* of mysqli_*

  2. Essentials en gebruik van NOLOCK-hint in SQL Server

  3. Arraywaarden samenvoegen/samenvoegen tijdens groeperen/aggregeren

  4. PostgreSQL:lopende telling van rijen voor een zoekopdracht 'per minuut'