Mysql
 sql >> Baza danych >  >> RDS >> Mysql

uzyskać dane z wielu tabel w MySQL z różnymi warunkami lokalizacji

Musisz umieścić czek użytkownika w przyłączeniu, a nie w warunku gdzie:

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 

Powodem tego jest to, że JOINS używa „lewego sprzężenia” (które jest niejawnie sprzężeniem zewnętrznym). Ten typ sprzężenia oznacza, że ​​jeśli warunek działa, zwróć wszystkie dane kolumny dla tej tabeli dla tego wiersza.. jeśli całość warunek nie działa, zwróci wszystkie dane dla tabel wymienionych wcześniej, ale dla tabeli wymienionej w wierszu zwróci NULL dla wszystkich tych kolumn.

Przepraszam za ten opis, ponieważ trudno jest wyrazić słowami dokładnie, jak działa złożone złącze zewnętrzne (lub lewe) bez rozwlekłości.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP, jak cytować wartości tablicy ciągów

  2. Połączenia w MySQL do pobierania danych z wielu tabel

  3. Jak zrobić Restful Password Reminder i zmienić pole e-mail użytkownika na pole nazwy użytkownika w Laravel 5.0?

  4. Nie można zainstalować MySQL na Mac OS X

  5. Zagnieżdżony wybór MySQL 8 z liczbą