Python týden Letní akce
Pouze tento týden sleva až 80 % na kurzy Python. Lze kombinovat s akcí Letní slevy na prémiový obsah!
Brno? Vypsali jsme pro vás nové termíny školení Základů programování a OOP v Brně!
Avatar
radek
Člen
Avatar
radek:11.10.2018 10:29

Mám 2 tabulky STANICE a STANICEHIS, které jsou stejné, jen v STANICEHIS jsou historické údaje. Pro záznam z tabulek TSTANICE a TSTANICEHIS týkající se daného id. používám kód:

"SELECT CISLO, NAZEV, AREAL, ODDELENI FROM STANICE WHERE ID = @id UNION SELECT CISLO, NAZEV, AREAL, ODDELENI FROM STANICEHIS WHERE ID = @id ORDER BY 1 DESC"

Kód funguje dobře.

Potřebuju ale připojit další tabulku ODDELENI, kde je číslo oddělení, které je stejné jako oddeleni v tabulce STANICE a nazev ODDELENI, které tam potřebuji mít.

zkouším kód, ale nefunguje, prosím o opravu tohoto kódu. Díky
"SELECT S.CISLO, S.NAZEV S_NAZEV, S.AREAL, S.ODDELENI O.NAZEV O_NAZEV FROM STANICE S LEFT JOIN ODDELENI O ON O.KOD = S.ODDELENI WHERE S.ID = @id UNION SELECT S.CISLO, S.NAZEV S_NAZEV, S.AREAL, S.ODDELENI O.NAZEV O_NAZEV FROM STANICE S LEFT JOIN ODDELENI O ON O.KOD = S.ODDELENI WHERE S.ID = @id ORDER BY 1 DESC"

 
Odpovědět 11.10.2018 10:29
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:11.10.2018 10:53

Pocet sloupcu musi byt pro union stejny u obou dotazu. Coz se zda, ze je.
U nazvu sloupcu pouzivam AS.
A chybeli tam carky.
Jinak se zda, ze by to mohlo byt ok.
Jo, zkus kdyztak formatovac kodu a sql dotazy si pis aspon takto formatovane do programu. Vetsinou si s tim umi poradit sql-driver. http://www.dpriver.com/…qlformat.htm

 SELECT
          s.cislo,
          s.nazev AS s_nazev, -- pridal jsem tam vsude AS
          s.areal,
          s.oddeleni, -- tady schazela carka
          o.nazev AS o_nazev
FROM
          stanice s
          LEFT JOIN oddeleni o ON o.kod = s.oddeleni
WHERE     s.id = @id

UNION

SELECT
          s.cislo,
          s.nazev AS s_nazev,
          s.areal,
          s.oddeleni, -- tady take schazela carka
          o.nazev AS o_nazev
FROM
          stanice s
          LEFT JOIN oddeleni o ON o.kod = s.oddeleni
WHERE     s.id = @id

ORDER BY  1 DESC -- nebylo by lepsi sem napsat jmeno sloupce?
Editováno 11.10.2018 10:54
 
Nahoru Odpovědět  +1 11.10.2018 10:53
Avatar
radek
Člen
Avatar
radek:11.10.2018 11:26

Díky už to funguje

 
Nahoru Odpovědět 11.10.2018 11:26
Avatar
plelovsky
Člen
Avatar
plelovsky:11.10.2018 14:37

Můžu se zeptat - jaký má smysl spojovat UNIONem 2 identické dotazy? Oba jsou ze stejných tabulek. Chceš tam mít každý řádek 2 krát?

 
Nahoru Odpovědět 11.10.2018 14:37
Avatar
radek
Člen
Avatar
radek:11.10.2018 20:08

Nejsou ze stejných tabulek. 1 tabulka je STANICE, kde jsou aktuální data. 2 tabulka je STANICEHIS, kde jsou historická data, tzn. vidím zde změny i zrušení stanic, včetně datumu změn i kdo změny udělal. Když tabulky nespojím, vidím veškerá historická data. Když je takto spojím vidím historická data konkrétní stanice.

 
Nahoru Odpovědět 11.10.2018 20:08
Avatar
Peter Mlich
Člen
Avatar
Odpovídá na radek
Peter Mlich:12.10.2018 10:05

Plelovsky mysli to, ze v tom tvem posl. dotazu, ktery jsem nechal zformatovat, nad i pod union jsou obe tabulky stejne, 'stanice s' a 'stanice s'. Tak, pokud jedna mela byt stanicehist, tak, snad sis to opravil :) Nahodou, velmi dobra pripominka.

Editováno 12.10.2018 10:05
 
Nahoru Odpovědět 12.10.2018 10:05
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 6 zpráv z 6.