Om jag förstår din fråga rätt, products
tabellen skulle ha standardpriset och product_prices
bord skulle ha något annat pris.
Du vill veta var standardpriset används, vilket innebär att det inte finns några andra priser. Använd en left outer join
för detta :
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
Baserat på din kommentar lagrar du standardpriserna i poster med företags-ID:t NULL. I det här fallet skulle jag göra två kopplingar till pristabellen:
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
Den första anslutningen får det pris som matchar det givna priset. Den andra får standardpriset. Det första resultatet används, om det finns, annars används det andra.