如果我正确理解您的问题,则该
products表将具有默认价格,而该
product_prices表将具有任何其他价格。
您想知道默认价格在哪里使用,这意味着没有其他价格。为此,请使用
left outer join:
SELECt p.*, coalesce(pp.price, p.default_price)FROM products p LEFT OUTER JOIN products_prices pp ON p.id = pp.productIdWHERe pp.price = GIVENPRICE or pp.price is null
根据您的评论,您将默认价格存储在业务ID为NULL的记录中。在这种情况下,我将对价格表进行两次联接:
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
第一个联接获得与给定价格匹配的价格。第二个获取默认价格。如果存在,则使用第一个结果,否则,使用第二个结果。



