Nếu tôi hiểu đúng câu hỏi của bạn, thì products
bảng sẽ có giá mặc định và product_prices
bảng sẽ có bất kỳ giá nào khác.
Bạn muốn biết nơi giá mặc định đang được sử dụng, nghĩa là không có giá nào khác. Đối với điều này, hãy sử dụng 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
Dựa trên nhận xét của bạn, bạn đang lưu trữ giá mặc định trong các bản ghi với id doanh nghiệp là NULL. Trong trường hợp này, tôi sẽ thực hiện hai phép nối vào bảng giá:
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
Lần tham gia đầu tiên nhận được giá khớp với giá đã cho. Thứ hai nhận giá mặc định. Kết quả đầu tiên được sử dụng, nếu có, nếu không kết quả thứ hai được sử dụng.