Als ik uw vraag goed begrijp, de products
tabel zou de standaardprijs en de product_prices
. hebben tafel zou een andere prijs hebben.
U wilt weten waar de standaardprijs wordt gebruikt, wat betekent dat er geen andere prijzen zijn. Gebruik hiervoor een 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
Op basis van uw opmerking slaat u de standaardprijzen op in records met als bedrijfs-ID NULL. In dit geval zou ik twee keer meedoen aan de prijstabel:
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
De eerste join krijgt de prijs die overeenkomt met de opgegeven prijs. De tweede krijgt de standaardprijs. Het eerste resultaat wordt gebruikt, indien aanwezig, anders wordt het tweede gebruikt.