11 Ağustos 2017 Cuma

MySQL If Koşulu

Giriş
ANSI standardında CASE WHEN kullanımı var. If kullanımı MySQL'e mahsus. Belki de bu kullanımı tercih etmemek lazım.

If
Yapısı şöyledir.
IF expression THEN
  expression        
ELSE 
  expression
ENDIF;
Örnek
Şöyle yaparız.
DECLARE married int, single int

SET married = select COUNT(StudMaritalStatus) from students WHERE StudMaritalStatus = 'M'

SET single = select COUNT(StudMaritalStatus) from students WHERE StudMaritalStatus = 'S'

IF married < single THEN 
  PRINT 'YES'
ELSE 
  PRINT 'NO'
END IF
Örnek
Elimizde şöyle bir tablo olsun
| orders_id  |   shop_id   |mode|
|:-----------|------------:|---:|
| 1          |        1001 |   1|
| 2          |        1001 |   1|
| 3          |        1001 |   2|
| 4          |        1003 |   1|
| 5          |        1004 |   1|
| 6          |        1004 |   2|
Şöyle yaparız.
SELECT
    shop_id,
    SUM(@tm1 := IF(`mode`=1, 1, 0)) AS tot_mode_1, 
    SUM(@tm2 := IF(`mode`=2, 1, 0)) AS tot_mode_2,
    SUM(@tm1 * 20 + @tm2 * 10) AS total
FROM orders 
GROUP BY shop_id
ORDER BY total desc
Çıktı olarak şunu alırız.
shop_id     tot_mode_1  tot_mode_2  total
1001        2           1           50
1004        1           1           30
1003        1           0           20

Hiç yorum yok:

Yorum Gönder