Pokud správně rozumím vaší otázce, products
tabulka bude mít výchozí cenu a product_prices
stůl by měl jinou cenu.
Chcete vědět, kde se používá výchozí cena, což znamená, že neexistují žádné jiné ceny. K tomu použijte 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
Na základě vašeho komentáře ukládáte výchozí ceny do záznamů s ID firmy NULL. V tomto případě bych provedl dvě připojení k tabulce cen:
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
První spojení získá cenu odpovídající dané ceně. Druhý dostane výchozí cenu. Použije se první výsledek, pokud existuje, jinak se použije druhý.