私はのリストを持っていますProducts
upc | name | price | qty
----------------------------
1 | apple | 1.00 | 3
2 | peach | 2.00 | 7
3 | melon | 1.75 | 2
とSaleProducts
upc | price
------------
2 | 1.90
製品から選択したいだけでなく、SaleProducts からのセール価格も選択したい (製品がセール中の場合)。これは私が思いついたものです:
SELECT t1.upc, t1.name, MIN(t1.price) AS 'price', t1.qty
FROM (
SELECT p.upc, p.name, p.price, p.qty
FROM products p
UNION
SELECT sp.upc, NULL, sp.price, NULL
FROM saleproducts sp
) t1
GROUP BY t1.upc;
出力:
upc | name | price | qty
----------------------------
1 | apple | 1.00 | 3
2 | peach | 1.90 | 7
3 | melon | 1.75 | 2
これを達成するためのよりエレガントな方法を提案できる人はいますか? 私は同様の質問を認識していますが、私の目標は価格が低い方を取得することなので、COALESCE
うまくいきません.
唯一の制限は、バニラ SQL を使用する必要があり、ストアド プロシージャや IF を使用しないことです。