Autor | Zpráva | ||
---|---|---|---|
bonescrusher Profil * |
#1 · Zasláno: 2. 9. 2008, 16:59:17
Zdravím prosím o pomoc.
Mám tabulku, s hračkami, ve sloupci CENA mám cenu hračky a ve sloupci SAZBADPH mám sazbu DPH a potřeboval bych vrátit sloupec CENASDPH, kde by byla spočítána cena se sazbou DPH. To bych ještě uměl, ale potřebuju manipulovat se všemi sloupci jako nově pojemnovanými, protože musím aplikovat ještě slevy atd. SELECT DISTINCT `hracky`.`ID`, `hracky`.`CENA` AS "HRACKYCENA", `hracky`.`SAZBADPH` AS "HRACKYSAZBADPH", (`HRACKYCENA`+ `HRACKYCENA` * (`HRACKYSAZBADPH` / 100)) AS "CENASDPH" FROM `hracky` Zaboha mně to nechce vzít, phpadmin tvrdí Sloupec 'HRACKYCENA' v field list není zcela jasný nebo, že sloupec neexistuje. Díky všem. |
||
Kajman_ Profil * |
#2 · Zasláno: 2. 9. 2008, 17:14:33
Kolem aliasu se v mysql nedávají uvozovky ale zpětný apostof, který máte u názvů sloupců.
|
||
bonescrusher Profil * |
#3 · Zasláno: 2. 9. 2008, 19:22:41
I se zpětnými úvozovkami to nefunguje.
phpadmin píše Neznámý sloupec `HRACKYSAZBADPH` v field list |
||
Kajman_ Profil * |
#4 · Zasláno: 2. 9. 2008, 19:51:01
Nevšiml jsem si, že je hned používáte. Myslím, že se je dá použít až v order by a having. Nebo v nadřazeném selectu. Použijte normálně ty sloupečky.
SELECT DISTINCT `hracky`.`ID`, `hracky`.`CENA` AS `HRACKYCENA`, `hracky`.`SAZBADPH` AS `HRACKYSAZBADPH`, (`hracky`.`CENA`+ `hracky`.`CENA` * (`hracky`.`SAZBADPH` / 100)) AS `CENASDPH` FROM `hracky` |
||
bonescrusher Profil * |
#5 · Zasláno: 3. 9. 2008, 14:49:59
Děkuji za nápady. Musím ale použít nové pojmenování, protože na sloupec `HRACKYCENA` se ještě váže sleva, kterou jsem se m nechtěl psát, protože by to bylo nepřehledné. Sloupec `HRACKYCENA` je složen z několika podmínek, asi pět řádků textu a psát je do dotazu dvakrát se mně zdá zbytečné. Přece na tohle museli vývojaři MySQL myslet a nějak to vyřešit, nemám pravdu?
|
||
Kajman_ Profil * |
Znám jen dva způsoby, jak to v mysql použít, buď jako poddotaz
select t.*, (`HRACKYCENA` *(1+ (ifnull(`HRACKYSAZBADPH`,0) / 100))) AS "CENASDPH" from (SELECT DISTINCT `hracky`.`ID`, `hracky`.`CENA` AS `HRACKYCENA`, `hracky`.`SAZBADPH` AS `HRACKYSAZBADPH` FROM `hracky`) t nebo to dát do proměnné SELECT DISTINCT `hracky`.`ID`, @cena:=`hracky`.`CENA` AS `HRACKYCENA`, @dan:=`hracky`.`SAZBADPH` AS `HRACKYSAZBADPH`, (@cena * (1+(ifnull(@dan,0)/ 100))) AS `CENASDPH` FROM `hracky` Ale možná existuje ještě něco jiného. |
||
Časová prodleva: 16 let
|
0