SQL úlohy

Programovacie jazyky, rady, poradňa...
VikThor
Novice
Novice
Príspevky: 2
Registrovaný: 18 júl 2010, 17:48

SQL úlohy

Príspevok od používateľa VikThor »

Zdravím, v škole sa učíme SQL a v rámci cvičení máme zadané úlohy. Sem tam však narazím na veci, ktoré neviem vyriešiť, respektíve ak ich aj vyriešim tak neviem či na danú úlohu nie je nejaký špeciálny príkaz o ktorom neviem. Tak bol by som rád, keby mi niekto skúsenejší pomohol s týmito úlohami.

1. Problém
Mám stĺpec v tabuľke SPECIFIKACIA_TYPU CHAR(15) a z tohto stĺpca mám vypísať tie riadky kde má táto špecifikácia typu 3 až 5 písmen a začína na číslo. Zaujíma ma práve riešenie tej podmienky s písmenami. S tým číslom som to nejak vyriešil ale neviem či je to košer.

Kód: Vybrať všetko

...WHERE SUBSTR(SPECIFIKACIA_TYPU,1,1) IN ('0','1','2','3','4','5','6','7','8','9') AND ...?...;
2. Problém
Mám 2 totožné tabuľky: AUTA a AUTA_ZALOHA
V tabuľke AUTA_ZALOHA som v niektorých riadkoch stĺpca POPLATOK_KM zmenil hodnoty na sumu 50.
A následne potrebujem spraviť výpis tabuľky AUTA_ZALOHA aj spolu s komentárom pri každom riadku, či táto hodnota POPLATOK_KM bola alebo nebola zmenená. Mám to riešiť príkazom DECODE.

Čiže chcel by som v tomto príkaze porovnať hodnotu z tabuľky AUTA_ZALOHA s hodnotou v tabuľke AUTA a pri zhode vygenerovať výsledok 'NEZMENENY' v inom prípade 'ZMENENY'.

Moje riešenie:

Kód: Vybrať všetko

SELECT TYP, SPECIFIKACIA_TYPU, POPLATOK_DENNY, POPLATOK_KM, DECODE(AUTA_ZALOHA.POPLATOK_KM, AUTA.POPLATOK_KM, 'NEZMENENY', 'ZMENENY') AS "STAV" FROM AUTA_ZALOHA ORDER BY POPLATOK_KM DESC;

nezbehne a hlási AUTA.POPLATOK_KM invalid identifier

3. Problém
Mám stĺpec POPLATOK_DENNY NUMBER(4) a potrebujem v každom riadku pripočítať 20% čo som urobil príkazom POPLATOK_DENNY=1.2*POPLATOK_DENNY
no problém je že pri opätovnom výpise tabuľky mi to síce pripočíta 20 % ale zaokrúhľuje mi to na celé čísla aj keď v niektorých prípadov by mali byť aj hodnoty s jedným desatinným miestom.
markus
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 950
Registrovaný: 24 feb 2005, 23:53

Re: SQL úlohy

Príspevok od používateľa markus »

1. pouzujes prikaz len a znamienka vacsi, mensi
http://www.w3schools.com/sql/sql_func_len.asp

3. napada ma jedine vyskusat nieco takeho
POPLATOK_DENNY = int(1.2*POPLATOK_DENNY)
ale tymto si isty niesom ;)
VikThor
Novice
Novice
Príspevky: 2
Registrovaný: 18 júl 2010, 17:48

Re: SQL úlohy

Príspevok od používateľa VikThor »

No tak tú jednotku som teda vyriešil tým spôsobom čo si navrhol

Kód: Vybrať všetko

WHERE SUBSTR(SPECIFIKACIA_TYPU,2,1) IN ('0','1','2','3','4','5','6','7','8','9') AND (LENGTH(SPECIFIKACIA_TYPU)>2 AND LENGTH(RTRIM(SPECIFIKACIA_TYPU))<6);
Len ten príkaz ráta všetky znaky v reťazci, teda aj čísla a medzery. Na spočítanie písmen asi nejaký príkaz neexistuje čo?
Napísať odpoveď