Databáze > Obecné

Podľa hodnoty stĺpca načítať údaj zo zodpovedajúcej tabuľky

(1/2) > >>

Stanislav Hruška:
V jedinom SQL selecte môže hodnota stĺpcaX nadobudnúť null alebo niektorú z 3 hodnôt. Pre každú hodnotu potrebujem načítať údaj z inej tabuľky a použiť ho pre výpočet hodnoty stĺpca.

* Definujem si 4 samostatné SQL. Zistím si hodnoty stĺpcaX a podľa potreby spustím požadované SQL
* Definujem si jedno SQL zoradené podľa stĺpcaX. V cykle ho prechádzam záznam po zázname a postupne spracujem. Výsledky zapíšem naraz v dávke. Tento spôsob sa mi vôbec nepáči
* Načítať si údaje naraz zo všetkých troch tabuliek, ako jeden subselect či pohľad, a pomocou CASE vyberiem požadovanú hodnotu.Iný (teoretický) spôsob riešenia mi na um neprišiel. Výpočet je jednoduchý
--- Kód: ---CAST(ZnamaHodnota * "Tabulka1 až 3".Hodnota * NR.PRICEUNIT_VAT * SP.PERCENT2 AS DOUBLE PRECISION) / 100 COST2,
--- Konec kódu ---

pf1957:

--- Citace: Stanislav Hruška  15-06-2018, 21:10:09 ---V jedinom SQL selecte môže hodnota stĺpcaX nadobudnúť null alebo niektorú z 3 hodnôt. Pre každú hodnotu potrebujem načítať údaj z inej tabuľky a použiť ho pre výpočet hodnoty stĺpca.

* Definujem si 4 samostatné SQL. Zistím si hodnoty stĺpcaX a podľa potreby spustím požadované SQL
* Definujem si jedno SQL zoradené podľa stĺpcaX. V cykle ho prechádzam záznam po zázname a postupne spracujem. Výsledky zapíšem naraz v dávke. Tento spôsob sa mi vôbec nepáči
* Načítať si údaje naraz zo všetkých troch tabuliek, ako jeden subselect či pohľad, a pomocou CASE vyberiem požadovanú hodnotu.Iný (teoretický) spôsob riešenia mi na um neprišiel. Výpočet je jednoduchý
--- Kód: ---CAST(ZnamaHodnota * "Tabulka1 až 3".Hodnota * NR.PRICEUNIT_VAT * SP.PERCENT2 AS DOUBLE PRECISION) / 100 COST2,
--- Konec kódu ---

--- Konce citace ---
A co podle hodnoty sloupceX pripojit outer joinem  jednu z Tabulek1 az 3 a k hodnote "Tabulka1 až 3".Hodnota se dostat koalici?

Stanislav Hruška:
Asi tuším ako to myslíš. Len nerozumiem čo myslíš pod pojmom "koalici". Snažím sa všetko robiť jedným razom. Tam je problém v tom, že môžem potrebovať hodnoty zo všetkých troch tabuliek naraz. A ako si vyberiem tú správnu?
Ja to vidím na to posledné riešenie. To mi prišlo na um až vo chvíli, keď som chcel odoslať príspevok.

pf1957:

--- Citace: Stanislav Hruška  16-06-2018, 09:33:36 ---Asi tuším ako to myslíš. Len nerozumiem čo myslíš pod pojmom "koalici".

--- Konce citace ---
coalesce

vandrovnik:

--- Citace: Stanislav Hruška  15-06-2018, 21:10:09 ---V jedinom SQL selecte môže hodnota stĺpcaX nadobudnúť null alebo niektorú z 3 hodnôt. Pre každú hodnotu potrebujem načítať údaj z inej tabuľky a použiť ho pre výpočet hodnoty stĺpca.

* Načítať si údaje naraz zo všetkých troch tabuliek, ako jeden subselect či pohľad, a pomocou CASE vyberiem požadovanú hodnotu.Iný (teoretický) spôsob riešenia mi na um neprišiel. Výpočet je jednoduchý
--- Kód: ---CAST(ZnamaHodnota * "Tabulka1 až 3".Hodnota * NR.PRICEUNIT_VAT * SP.PERCENT2 AS DOUBLE PRECISION) / 100 COST2,
--- Konec kódu ---

--- Konce citace ---

Pomocí LEFT OUTER JOIN bych si připojil všechny 3 tabulky.
Výpočet by pak byl něco jako:


--- Kód: ---CAST(ZnamaHodnota * (CASE
 WHEN stlpec=1 THEN Tabulka1.Hodnota
 WHEN stlpec=2 THEN Tabulka2.Hodnota
 WHEN stlpec=3 THEN Tabulka3.Hodnota
 ELSE NULL END) * NR.PRICEUNIT_VAT * SP.PERCENT2 AS DOUBLE PRECISION) / 100 COST2,
--- Konec kódu ---

Navigace

[0] Seznam témat

[#] Další strana

Přejít na plnou verzi