Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara memilih dari dua tabel di MySQL meskipun tidak semua baris dalam satu tabel memiliki koresponden di tabel lainnya?

Untuk melakukan ini, Anda memerlukan gabungan luar. Omong-omong, cara Anda menulis kueri dengan gabungan implisit sudah usang dan tidak lagi direkomendasikan. Dianjurkan untuk menggunakan kata kunci JOIN. Ini juga memudahkan untuk mengubah gabungan dalam menjadi gabungan luar.

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

Untuk mengembalikan 0 alih-alih NULL gunakan IFNULL(..., 0) . Seluruh kueri menjadi:

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

Anda mungkin juga ingin mempertimbangkan apakah akan lebih baik untuk mengembalikan NULL default daripada 0 untuk kategori yang tidak memiliki produk.



  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 mengonversi string tanggal ke cap waktu Unix

  2. Gabung Luar Kiri tidak mengembalikan semua baris dari tabel kiri saya?

  3. Memahami Tampilan dalam SQL

  4. Apakah ada alternatif ANSI SQL untuk kata kunci MYSQL LIMIT?

  5. Neo4j - Hapus Hubungan menggunakan Cypher