Autor Zpráva
Ivorius
Profil
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
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
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
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
Toto téma je uzamčeno. Odpověď nelze zaslat.