Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Mysql bergabung dengan empat tabel dan tunjukkan nilai NULL

Berikut ini harus mengembalikan semua siswa, dengan nilai dari ujian 32 jika ada.

SELECT scores.result,students.id,exam.name, exam.id
FROM exam
INNER JOIN scores ON exam.id = scores.exam_id
RIGHT OUTER JOIN students ON scores.user_id = students.user_id
WHERE exam.id = 32

Klausa pilih Anda tidak menggunakan apa pun dari siswa_subjek atau fungsi agregat, jadi saya tidak yakin untuk apa bergabung? Mungkin Anda bisa mulai dengan yang di atas dan membangun dari sana.

Sunting:Strategi baru berdasarkan komentar pertama saya. Coba dan temukan semua siswa kemudian temukan skor yang ada, null jika tidak ada.

SELECT scores.result,students.id,exam.name, exam.id
FROM exam
INNER JOIN students_subjects ON students_subjects.group_id = exam.group_id
INNER JOIN students ON students_subjects.user_id = students.user_id
LEFT OUTER JOIN scores ON scores.user_id = students.user_id
  AND scores.exam_id = exam.id
WHERE exam.id = 32


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kolom pembaruan MySQL pada kemunculan pertama setiap nama pengguna

  2. Pemberitahuan:Variabel tidak terdefinisi:db saat menggunakan PDO

  3. impor data mysql ke hdfs(hadoop 2.4.1) menggunakan sqoop(1.4.5)

  4. Dapatkan nilai MAX dari satu kolom dan MIN dari kolom lain

  5. DATEDIFF - Ganti NULL dengan SEKARANG ()