Si entiendo bien su pregunta, los products
la tabla tendría el precio predeterminado y los product_prices
mesa tendría cualquier otro precio.
Desea saber dónde se utiliza el precio predeterminado, lo que significa que no hay otros precios. Para esto, use una 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
Según su comentario, está almacenando los precios predeterminados en registros con la identificación comercial NULL. En este caso, haría dos uniones a la tabla de precios:
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
La primera unión obtiene el precio que coincide con el precio dado. El segundo obtiene el precio predeterminado. Se utiliza el primer resultado, si está presente; de lo contrario, se utiliza el segundo.