Hvis jeg forstår dit spørgsmål korrekt, er products
tabellen ville have standardprisen og product_prices
bord ville have en hvilken som helst anden pris.
Du vil gerne vide, hvor standardprisen bliver brugt, hvilket betyder, at der ikke er andre priser. Til dette skal du bruge en 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
Baseret på din kommentar gemmer du standardpriserne i poster med forretnings-id'et NULL. I dette tilfælde ville jeg lave to joins til 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ørste join får prisen, der matcher den givne pris. Den anden får standardprisen. Det første resultat bruges, hvis det findes, ellers bruges det andet.