21611

[code]

    IF(EXISTS(SELECT price FROM price_h WHERE id = Product.price_h_id limit 1),
                  (SELECT price FROM price_h WHERE id = Product.price_h_id limit 1),
                  Product.f_price
                )
    
[/code]

上記のような、IFで、`(SELECT price FROM price_h WHERE id = Product.price_h_id limit
1)`と`Product.f_price`、算出される数値が100より下なら100,100以上なら、そのまま数値を出したいのですが

[code]

     IF(EXISTS(SELECT price FROM price_h WHERE id = Product.price_h_id limit 1),
            IF((SELECT price FROM price_h WHERE id = Product.price_h_id limit 1)<100),
                  100,
                  (SELECT price FROM price_h WHERE id = Product.price_h_id limit 1),
            IF(Product.f_price < 100),
                  100,
                  Product.f_price,
                )
    
[/code]

上記のような形になると思いますが、どのような記述になりますか？  
MySQLのバージョンは5.6です。


CC BY-SA 3.0
2016-02-02T01:28:53.003
21597
2016-02-02T08:15:23.687
10980
question
mysql sql
sql内でIF文を２つ使いたい


質問を整理すると、こんな感じでしょうか。間違っていたらご指摘ください。

  1. price_hテーブルにproductが存在すればpriceを出力、しないならProduct.f_priceを出力
  2. この出力が<100なら100、そうでないなら、その値を出力

1についてはCOALESCEを使えば、NULLでない最初の値が出力されます。IFNULL()を使っても書けます。

[code]

    SELECT COALESCE(price_h.price, Product.f_price) 
    FROM price_h LEFT JOIN Product ON price_h.id = Product.price_h_id
    
[/code]

2についてはpriceが<100なら100,それ以上ならpriceをそのまま出すには

[code]

    SELECT  IF(price < 100, 100, price)
    FROM price_h
    
[/code]

組み合わせれば

[code]

    SELECT IF(COALESCE(price_h.price, Product.f_price) < 100,
              100, 
              COALESCE(price_h.price, Product.f_price))
    FROM price_h LEFT JOIN Product ON price_h.id = Product.price_h_id
    
[/code]


CC BY-SA 3.0
2016-02-02T05:45:04.710
21611
2016-02-02T08:15:23.687
2016-02-02T08:15:23.687
7837
7837
21597
answer