Autor | Zpráva | ||
---|---|---|---|
Ivorius Profil |
#1 · Zasláno: 20. 5. 2009, 10:49:08
Chtěl bych v mysql updatovat záznamy s tím ale, že nevím jestli už je sloupec sleva_vychozi vyplněn či ne a podle toho rozhodnout která data se updatují (jestli do ceny nebo do slevy). Neví někdo jak správně přepsat tento dotaz, pokud lze IF v Update vůbec takto využít
UPDATE zbozi IF sleva_vychozi IS NOT NULL THEN 'sleva_vychozi' = 100, 'sleva' = 119 ; ELSE 'cena_vychozi' = 100, 'cena' = 119 ; END IF; SET 'sklad' = 0 WHERE 'id' = 81 |
||
Aesir Profil |
#2 · Zasláno: 20. 5. 2009, 11:00:21
Ivorius
Použít to lze, ale podle syntaxe z control flow functions. Vámi použitá syntax se používá pro sql funkce a procedury. |
||
TomášK Profil |
#3 · Zasláno: 20. 5. 2009, 11:03:24
Mohlo by to vypadat třeba takhle, ale moc elegantní se mi to nezdá. Nic lepšího mě ale teď nenapadá.
UPDATE zbozi sleva_vychozi = IF(sleva_vychozi IS NOT NULL, 100, sleva_vychozi), sleva = IF(sleva_vychozi IS NOT NULL, 119, sleva), cena = IF(sleva_vychozi IS NULL, 100, cena), cena_vychozi = IF(sleva_vychozi IS NULL, 119, cena_vychozi), SET 'sklad' = 0 WHERE 'id' = 81 |
||
Ivorius Profil |
#4 · Zasláno: 20. 5. 2009, 11:14:34 · Upravil/a: Ivorius
Jo kluci super. Jde mi hlavně o to ušetřit SELECT, což tohle splňuje.
UPDATE zbozi SET sleva_vychozi = IF(sleva_vychozi IS NOT NULL, 100, sleva_vychozi), sleva = IF(sleva_vychozi IS NOT NULL, 119, sleva), cena = IF(sleva_vychozi IS NULL, 100, cena), cena_vychozi = IF(sleva_vychozi IS NULL, 119, cena_vychozi), sklad = 0 WHERE id = 81 |
||
Časová prodleva: 15 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0