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

Pobieranie wyników zapytania z tabel 2 db, nawet jeśli druga tabela nie ma odpowiednich wpisów

OP powiedział:

Problem polega na tym, że where Klauzula filtruje zestaw wyników, więc twój test dla req.status z 2 lub 5 wyrzuca wszystko, gdzie req.status ma wartość null, ponieważ żaden wiersz nie pasuje do tabeli applications .

Ogólna, teoretyczna (ponieważ nic poza trywialną implementacją kiedykolwiek zrobiłaby coś takiego) kolejność operacji dla select oświadczenie to:

  • Wyprodukuj pełny iloczyn kartezjański każdej tabeli wymienionej w from klauzula.
  • Przefiltruj to, stosując określone join kryteria i wyeliminowane wiersze, które nie przejdą określonych testów.
  • Zastosuj kryteria filtrowania określone w where klauzula, usuwając wiersze, które nie przeszły określonych testów.
  • Uporządkuj wyniki ustawione dla wyrażeń określonych w group by klauzulę i podziel zestaw wyników na grupy.
  • Zwiń każdą taką grupę w pojedynczy wiersz, obliczając wartość wszystkich określonych funkcji agregujących.
  • Usuń wszystkie kolumny z zestawu wyników, które nie są wymienione w select lista kolumn oświadczeń.
  • Uporządkuj końcowe wyniki ustawione według kolumn/wyrażeń określonych w order by klauzula.

Możesz zrobić jedną z dwóch rzeczy:

  • zmień zapytanie, aby przetestować pod kątem nieważności:

    where...( req.status is null OR req.status in (2,5) )...
    
  • przenieś test na req.status do kryteriów dołączenia:

    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. Uszkodzony CSV, jak mogę to naprawić?

  2. PHP Odwróć kolejność wyników w MySQL DB

  3. #1221 — Nieprawidłowe użycie UPDATE i ORDER BY

  4. Zmień nazwę procedury mysql

  5. MYSQL - Kolejność wartości sygnatury czasowej rosnąco w kolejności od najnowszych do najstarszych?