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

Nilai yang saling eksklusif dalam SQL

Jika saya memahami pertanyaan Anda dengan benar, products tabel akan memiliki harga default dan product_prices meja akan memiliki harga lain.

Anda ingin tahu di mana harga default digunakan, artinya tidak ada harga lain. Untuk ini, gunakan left outer join :

SELECT p.*, coalesce(pp.price, p.default_price)
FROM products p LEFT OUTER JOIN 
     products_prices pp
     ON p.id = pp.productId
WHERE pp.price = GIVENPRICE or pp.price is null

Berdasarkan komentar Anda, Anda menyimpan harga default dalam catatan dengan id bisnis menjadi NULL. Dalam hal ini, saya akan melakukan dua penggabungan ke tabel harga:

SELECT p.*, coalesce(pp.price, defpp.price)
FROM products p LEFT OUTER JOIN 
     products_prices pp
     ON p.id = pp.productId and pp.price = GIVENPRICE left outer join
     products_prices defpp
     on p.id = defpp.productId and defpp.businessId is NULL

Gabung pertama mendapatkan harga yang sesuai dengan harga yang diberikan. Yang kedua mendapatkan harga default. Hasil pertama digunakan, jika ada, jika tidak, yang kedua digunakan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. iOS - Praktik Terbaik Sinkronisasi Data Inti dan Basis Data Server

  2. Koneksi PHP gagal:SQLSTATE[HY000] [2002] Koneksi ditolak

  3. menyimpan nomor sebagai varchar

  4. Permintaan MySQL sangat lambat pada data besar

  5. Tipe data array, string terpisah,