Diskuze: interactive sql
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 11 zpráv z 11.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
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š.
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
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
A přesně na to se ti bude hodit příkaz CASE o kterém jsem psal výše ...
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'.
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 ...
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...
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
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...
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ě .
Zobrazeno 11 zpráv z 11.