Wenn ich Ihre Frage richtig verstehe, die products
Tabelle hätte den Standardpreis und die product_prices
Tisch hätte jeden anderen Preis.
Sie möchten wissen, wo der Standardpreis verwendet wird, was bedeutet, dass es keine anderen Preise gibt. Verwenden Sie dazu einen 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
Basierend auf Ihrem Kommentar speichern Sie die Standardpreise in Datensätzen, wobei die Geschäfts-ID NULL ist. In diesem Fall würde ich zwei Verknüpfungen mit der Preistabelle vornehmen:
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
Der erste Join erhält den Preis, der dem angegebenen Preis entspricht. Der zweite erhält den Standardpreis. Das erste Ergebnis wird verwendet, falls vorhanden, andernfalls wird das zweite verwendet.