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.