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

dapatkan data dari beberapa tabel di MySQL dengan kondisi tempat yang berbeda

Anda harus menempatkan cek pengguna di gabung, bukan di tempat seperti kondisi:

SELECT c.course_id,l.topic,l.id,l.vid_duration,p.* 
FROM courses c 
LEFT JOIN lessons l ON l.course_id=c.course_id  
LEFT JOIN progress p ON l.id = p.lesson_id and p.user_id = :userid
WHERE c.slug = :course 

Alasan untuk melakukan ini adalah bahwa GABUNG menggunakan "gabung kiri" (yang secara implisit merupakan gabungan luar". Jenis gabungan ini berarti bahwa jika kondisinya berhasil, kembalikan semua data kolom untuk tabel itu untuk baris itu.. jika keseluruhan kondisi tidak bekerja, itu akan mengembalikan semua data untuk tabel yang disebutkan sebelumnya, tetapi untuk tabel yang disebutkan di baris, itu akan mengembalikan NULLS untuk semua kolom tersebut.

Saya mohon maaf atas deskripsi tersebut, karena sulit untuk menjelaskan dengan tepat bagaimana gabungan luar (atau kiri) yang kompleks bekerja tanpa bertele-tele.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hapus Data dari Database MySQL

  2. Pilih data di antara dua tanggal?

  3. Tetapkan hasil variabel, dari kueri

  4. while($row =mysql_fetch_array($query)) tidak berfungsi untuk kedua kalinya

  5. Bagaimana cara menggunakan karakter khusus dalam nama kolom MySQL?