Mysql
 sql >> база данни >  >> RDS >> Mysql

Двойно JOIN със същата таблица два пъти

Ограниченията на клаузата where в левите таблици за присъединяване елиминират желаните резултати поради нулеви записи... Така че преместете ограниченията към самото присъединяване, така че ограничението да се приложи ПРЕДИ присъединяването, като по този начин запазвате записите с нулева стойност.

SELECT i.*,r.*,r2.*, r.points+r2.points AS sum_points
FROM list_couples AS l
LEFT JOIN rank AS r ON l.p_1=r.player
  and r.week='$week' AND r.anno='$anno' 
LEFT JOIN rank AS r2 ON l.p_2=r2.player
  and  r2.week='$week' AND r2.anno='$year'
ORDER BY sum_points DESC

Тъй като Плутон няма седмица/година (anno), тогава клаузата where елиминира този запис. чрез преместване на границите към съединението, филтърът се прилага преди присъединяването, като по този начин се запазва ЛЯВОТО външно съединение.

Казано по друг начин, клаузата WHERE прави лявото присъединяване към вътрешно!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво е името на специфичното за SQL език за програмиране на MySQL?

  2. Грешка при използване освен в заявка

  3. Подобрете SQL INSERT заявка, за да избегнете sql инжекции

  4. Как да направите броене на заявка за съюз

  5. Laravel ред по има много отношения