あなたの質問を正しく理解していれば、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.productId
WHERE pp.price = GIVENPRICE or pp.price is null
コメントに基づいて、ビジネスIDがNULLのレコードにデフォルトの価格を保存しています。この場合、価格表に2つの結合を行います。
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
最初の結合は、指定された価格に一致する価格を取得します。 2番目はデフォルト価格を取得します。最初の結果が存在する場合はそれが使用され、存在しない場合は2番目の結果が使用されます。