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

Получаване на резултати от заявка от 2 db таблици, дори когато втората таблица няма съответстващи записи

O.P. каза:

Проблемът е, че where клауза филтрира набора от резултати, така че вашият тест за req.status от 2 или 5 изхвърля всичко, където req.status е нула, защото нито един ред не съответства на таблицата applications .

Общият, теоретичен (тъй като нищо друго освен една тривиална реализация никога не би направила нещо подобно) ред на операции за select изразът е:

  • Произведете пълния декартов продукт на всяка таблица, посочена в from клауза.
  • Филтрирайте това, като приложите посочения join критерии и елиминирани редове, които не преминават посочените тестове.
  • Прилагане на критериите за филтриране, посочени в where клауза, премахваща редове, които не преминават посочените тестове.
  • Подредете набора от резултати на изразите, посочени в group by клауза и разделяне на набора от резултати в групи.
  • Свийте всяка такава група в един ред, като изчислите стойността на всички посочени агрегатни функции.
  • Премахнете всички колони от набора с резултати, които не са изброени в select списък с колони с изявления.
  • Подредете този набор от крайни резултати според колоните/изразите, посочени в order by клауза.

Можете да направите едно от двете неща:

  • променете заявката си, за да тествате за нищожност:

    where...( req.status is null OR req.status in (2,5) )...
    
  • преместете теста срещу req.status към критериите за присъединяване:

    left join requests req on req.app_id =  apps.id
                          and req.uid    =  {$user_id}
                          and req.status in (2,5)
    


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - Код на грешка 1215, не може да добави ограничение за външен ключ

  2. Създаване на персонализиран набор от резултати в MySQL

  3. Laravel AES-256 криптиране и MySQL

  4. Проста производителност на MySQL подзаявки

  5. Spring Mvc Hibernate Encoding/Multi-line import sql