IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: interactive sql

Aktivity
Avatar
MadBaz
Člen
Avatar
MadBaz:9.5.2016 13:12

Zdravím,
selektim do tabulky data, v jednom sloupci jsou čísla od 0 do 9, ale potřebují aby se mi místo čišel zobrazoval text: 0 - objednáno, 1- vystaveno, 2 - vyřízeno,... jak to můžu udělat?
Děkuji za odpověď

 
Odpovědět
9.5.2016 13:12
Avatar
Odpovídá na MadBaz
Michal Štěpánek:9.5.2016 13:43

Možná by pomohla věštecká koule, ne? Co kdybys to trošku rozvedl? Jak vypadá ta tabulka, z čeho bys chtěl ty názvy tahat... ?
Názvy stavů musíš mít někde uložené, nejlépe v jiné tabulce a pak JOINem vytáhnout to, co potřebuješ.

Editováno 9.5.2016 13:43
Nahoru Odpovědět
9.5.2016 13:43
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na MadBaz
Michal Haňáček:9.5.2016 14:15

Mno, obvykle se "selektí" z tabulky, nikoli do ní. Předpokládám, že to co hledáš je příkaz CASE, který ti pomůže vypsat ty tvoje popisky ... tak že doporučuju následující postup:
1 - prostudovat CASE
2 - označit mi příspěvěk jako řešení
3 - složit báseň ve které mi vyjádříš díky
:D

Nahoru Odpovědět
9.5.2016 14:15
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
MadBaz
Člen
Avatar
MadBaz:10.5.2016 9:16

sorry, ne selektim do ale z tabulky... selektim z tabulky sloupec 'stav', který obsahuje data - čísla od 0 do 9. já ale chci, aby se mi místo čišel zobrazoval text: objednáno, vystaveno, vyřízeno... chtěl jsem to udělat pomoci příkazu if...

select
hd.rada
, hd.stav
, hd.dokl
, hd.ico
, if (select z.stav from dba.gcl3 as z where hd.ico = z.ico and hd.nazev = z.nazev and hd.obchodnik = z.obchodnik) = 1 then z.stav = 'Objednavka' ENDIF as stav_proj
, hd.nazev
, hd.obchodnik
,(select DATEDIFF(day, hd.zalozeno, hd.terminnab)) as rozdildny
from dba.onabhd as hd
join #selrows as s on s.rada = hd.rada and s.dokl = hd.dokl

 
Nahoru Odpovědět
10.5.2016 9:16
Avatar
Odpovídá na MadBaz
Michal Haňáček:10.5.2016 9:22

A přesně na to se ti bude hodit příkaz CASE o kterém jsem psal výše :)...

Nahoru Odpovědět
10.5.2016 9:22
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
Ján Timoranský:10.5.2016 9:50

Keby si dal join s druhou tabulkou, v ktorej budeš mať tie hodnoty pre 0 až 9? Určite lepšie riešenie ako porovnávanie, just sayin'.

Nahoru Odpovědět
10.5.2016 9:50
Find what you love and let it kill you.
Avatar
Odpovídá na Ján Timoranský
Michal Haňáček:10.5.2016 9:55

Trochu se bojím, že takové řešení je dost neefektivní. Existence další tabulky jen kvůli tomu aby tam měl popisky pro hodnoty 0-9 (samozřejmě za předpokladu, že tu " popiskovou" tabulku by nevyužíval pro nic jiného).

Osobně bych nechal tabulku tak jak ji má a ve view pomocí CASE ošetřil ten výpis. Samozřejmě nikdo nevíme jak to tam má s CONSTRAINS tak že tyhle ošetření už si musí myslet sám ...

Nahoru Odpovědět
10.5.2016 9:55
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
Odpovídá na Michal Haňáček
Michal Štěpánek:10.5.2016 13:34

Ale když bude chtít změnit ten název, tak už to tak jednoduché mít nebude. Pokud použije extra tabulku, tak jen pohodlně změní hodnotu v tabulce a hotovo...

Nahoru Odpovědět
10.5.2016 13:34
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Michal Štěpánek
Michal Haňáček:10.5.2016 13:56

To rozhodně. Těžko říct co s tím plánuje dále. Vycházel jsem z toho že ty čísla jsou nějaké stavy a neplánuje se změna ze současného

0 - objednáno

bude v budoucnu

0 - vystaveno
Nahoru Odpovědět
10.5.2016 13:56
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
Odpovídá na Michal Haňáček
Michal Štěpánek:10.5.2016 15:15

Já to bral ze své zkušenosti, když dělám v práci informační systém, po čase zjistím, že se mi některý název nehodí a musím ho nahradit lepším, nebo přidat další... V mé úplně první aplikaci, jsem to měl taky ošetřeno kódem (if 1 -> nazev1...), jenže pak jsem to potřeboval trošku upravit a byl problém... Navíc jsem to musel upravit na mnoha místech. Proto mám raději použití extra tabulky na stavy, ze které pak JOINem tahám názvy...

Nahoru Odpovědět
10.5.2016 15:15
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Michal Štěpánek
Michal Haňáček:10.5.2016 15:41

I já na "produkci" používám tabulku pro "speciální hodnoty a názvy" kam jsou ukládány tyhle zástupný hodnoty ze všech tabulek. Ale na aplikace typu hello world bohatě stačí ten CASE. Každopádně máš asi pravdu a MadBaz by si to asi měl zpracovat pořádně :).

Nahoru Odpovědět
10.5.2016 15:41
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 11 zpráv z 11.