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

Jak wybrać jedną z dwóch tabel w MySQL, nawet jeśli nie wszystkie wiersze w jednej tabeli mają korespondentów w drugiej?

Aby to zrobić, potrzebujesz sprzężenia zewnętrznego. Nawiasem mówiąc, sposób pisania zapytania z niejawnym sprzężeniem jest przestarzały i nie jest już zalecany. Zalecane jest użycie słowa kluczowego JOIN. Ułatwia to również zmianę sprzężenia wewnętrznego na sprzężenie zewnętrzne.

FROM categories AS sc
LEFT JOIN products AS s
ON s.ownerid=sc.id

Aby zwrócić 0 zamiast NULL, użyj IFNULL(..., 0) . Całe zapytanie staje się:

SELECT
    sc.*,
    IFNULL(MIN(s.price), 0) AS minp,
    IFNULL(MAX(s.price), 0) AS maxp
FROM categories AS sc
LEFT JOIN products AS s
ON s.ownerid = sc.id
GROUP BY sc.id

Możesz również rozważyć, czy nie byłoby lepiej zwrócić domyślną wartość NULL zamiast 0 dla kategorii, które nie zawierają produktów.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak odzyskać bazę danych MySQL z plików .myd, .myi, .frm

  2. Procedury składowane MySQL używają ich lub nie

  3. Funkcja MySQL SIN() — zwraca sinus liczby w MySQL

  4. Policz liczbę unikalnych wartości

  5. Zrozumienie rozmiarów pamięci masowej dla typów danych MySQL TEXT