Se ho capito correttamente la tua domanda, i products
table avrebbe il prezzo predefinito e il product_prices
tavolo avrebbe qualsiasi altro prezzo.
Vuoi sapere dove viene utilizzato il prezzo predefinito, il che significa che non ci sono altri prezzi. Per questo, usa un 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
In base al tuo commento, stai memorizzando i prezzi predefiniti nei record con l'ID attività NULL. In questo caso, farei due join alla tabella dei prezzi:
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
Il primo join ottiene il prezzo corrispondente al prezzo indicato. Il secondo ottiene il prezzo predefinito. Viene utilizzato il primo risultato, se presente, altrimenti viene utilizzato il secondo.