Ако разбирам въпроса ви правилно, products
таблицата ще има цената по подразбиране и product_prices
масата ще има друга цена.
Искате да знаете къде се използва цената по подразбиране, което означава, че няма други цени. За това използвайте 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
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
Първото присъединяване получава цената, съответстваща на дадената цена. Вторият получава цената по подразбиране. Използва се първият резултат, ако е налице, в противен случай се използва вторият.