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.
Şöyle yaparız.
Elimizde şöyle bir tablo olsun
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