abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
včera 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 0
včera 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
2.12. 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 19
2.12. 15:30 | Zajímavý projekt

Společnost Jolla oznámila v příspěvku Case study: Sailfish Watch na svém blogu, že naportovala Sailfish OS na chytré hodinky. Využila a inspirovala se otevřeným operačním systémem pro chytré hodinky AsteroidOS. Použita je knihovna libhybris. Ukázka ovládání hodinek na YouTube.

Ladislav Hagara | Komentářů: 8
2.12. 14:15 | Nová verze

Byla vydána verze 7.1.0 skriptovacího jazyka PHP používaného zejména k vývoji dynamických webových stránek. Jedná se o první stabilní verzi nejnovější větvě 7.1. Přehled novinek v dokumentaci. Podrobnosti v ChangeLogu. K dispozici je také příručka pro přechod z PHP 7.0.x na PHP 7.1.x.

Ladislav Hagara | Komentářů: 2
2.12. 12:55 | Nová verze

Google Chrome 55 byl prohlášen za stabilní. Nejnovější stabilní verze 55.0.2883.75 tohoto webového prohlížeče přináší řadu oprav a vylepšení (YouTube). Opraveno bylo také 36 bezpečnostních chyb. Mariusz Mlynski si například vydělal 22 500 dolarů za 3 nahlášené chyby (Universal XSS in Blink).

Ladislav Hagara | Komentářů: 4
2.12. 11:55 | Pozvánky

Máte rádi svobodný software a hardware nebo se o nich chcete něco dozvědět? Přijďte na 135. sraz spolku OpenAlt, který se bude konat ve čtvrtek 8. prosince od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Sraz bude tentokrát tématický. Bude retro! K vidění budou přístroje jako Psion 5mx nebo Palm Z22. Ze svobodného hardwaru pak Openmoko nebo čtečka WikiReader. Přijďte se i vy pochlubit svými legendami, nebo alespoň na pivo. Moderní hardware má vstup samozřejmě také povolen.

xkucf03 | Komentářů: 0
2.12. 00:10 | Nová verze

Byla vydána verze 3.2 svobodného systému pro detekci a prevenci průniků a monitorování bezpečnosti počítačových sítí Suricata. Z novinek lze zmínit například podporu protokolů DNP3 a CIP/ENIP, vylepšenou podporu TLS a samozřejmě také aktualizovanou dokumentaci.

Ladislav Hagara | Komentářů: 0
1.12. 21:00 | Nová verze

Byla vydána beta verze Linux Mintu 18.1 s kódovým jménem Serena. Na blogu Linux Mintu jsou hned dvě oznámení. První o vydání Linux Mintu s prostředím MATE a druhé o vydání Linux Mintu s prostředím Cinnamon. Stejným způsobem jsou rozděleny také poznámky k vydání (MATE, Cinnamon) a přehled novinek s náhledy (MATE, Cinnamon). Linux Mint 18.1 bude podporován až do roku 2021.

Ladislav Hagara | Komentářů: 0
1.12. 16:42 | Nová verze

Byl vydán Devuan Jessie 1.0 Beta 2. Jedná se o druhou beta verzi forku Debianu bez systemd představeného v listopadu 2014 (zprávička). První beta verze byla vydána v dubnu letošního roku (zprávička). Jedna z posledních přednášek věnovaných Devuanu proběhla v listopadu na konferenci FSCONS 2016 (YouTube, pdf).

Ladislav Hagara | Komentářů: 0
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 767 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: SQL dotaz - 2 tabulky

20.3.2013 21:37 Petr
SQL dotaz - 2 tabulky
Přečteno: 973×
potřebuji poradit, lze nějak vytvořit takový SQL dotaz? Mám MySQL tabulky TAB1(Rec Long primary key, Typ int) a TAB2(Rec Long, Krok varchar(5), Datum date) a potřebuji vypsat Rec z TAB1, kde Typ = např. 1 a v TAB2 je s tímto Rec Krok 'KrokA' a zároveň není žádný Krok 'KrokB' s datem větším než u 'KrokA'. Snad je to srozumitelné. Děkuji za pomoc.

Odpovědi

20.3.2013 22:41 kuka
Rozbalit Rozbalit vše Re: SQL dotaz - 2 tabulky
Spojeni TAB1 s TAB2 s podminkou na KrokA by melo byt trivialni, nasledne ... and not exists (dotaz na KrokB podle kriterii) a podle moznosti duplicity KrokA pak pripadne jeste distinct.
20.3.2013 23:32 Petr
Rozbalit Rozbalit vše Re: SQL dotaz - 2 tabulky
ano, s podmínkou jen na 'KrokA' bych udělal SELECT DISTINCT TAB1.Rec FROM TAB1,TAB2 WHERE TAB1.Rec=TAB2.Rec AND Krok = 'KrokA'; Ale jak tam dodat podmínku na nepřitomnost 'KrokB' a ještě jen s datem větším než u toho nalezeného 'KrokA' (A to ještě teoreticky by pro jeden Rec mohlo záznamů kde Krok = 'KrokA' být i více a v tom případě by mě zajímal ten poslední (s nejvyšším datem) a testovat nepřítomnost 'KrokB' po tomto datu), to nevím ...
21.3.2013 08:26 j
Rozbalit Rozbalit vše Re: SQL dotaz - 2 tabulky
na prasaka (nezarucuju syntax):

select * (

select * from tab1
 join (select rec, max(datum) from tab2 where krok = "kroka") as s1
    on tab1.rec = s2.rec
 join (select rec, max(datum) from tab2 where krok = "krokb") as s2
    on tab1.rec = s2.rec
)

where s1.datum > s2.datum

21.3.2013 08:30 j
Rozbalit Rozbalit vše Re: SQL dotaz - 2 tabulky
a jasne, uz tam vidim min jeden bug ... prvni join ma byt na s1 samo ...
21.3.2013 09:18 kuka
Rozbalit Rozbalit vše Re: SQL dotaz - 2 tabulky
No prida se tam and not exists (select vybirajici KrokB s vyssim datumem). Jestli chces maximalni datum, tak nakonec neudelas distinct, ale group by. Pokud tyto konstrukce neznas (exists, group by), tak si je nekde dohledej, to jsou azklady SQL, bez kterych se daleko nedostanes. Vysledny dotaz bude de facto ten tvuj slovni pozadavek zapsany "anglicky".
21.3.2013 14:34 Petr
Rozbalit Rozbalit vše Re: SQL dotaz - 2 tabulky
Základy SQL znám, ale v tomto případě prostě nevím. Mohl byste mi prosím napsat celý SQL dotaz?
21.3.2013 15:50 kuka
Rozbalit Rozbalit vše Re: SQL dotaz - 2 tabulky
Tak treba
select t1.rec, max(krok_a.datum)
from t1, t2 krok_a
where t1.rec = krok_a.rec
  and krok_a.krok = 'KrokA'
  and not exists( select 0 from t2 krok_b
                    where krok_b.rec = t1.rec
                      and krok_b.krok = 'KrokB'
                      and krok_b.datum > krok_a.datum)
group by t1.rec
konkretne toto lze udelat jednoduchym group by jen nad tabulkou t2, coz doporucuju jako cviceni.
21.3.2013 08:12 Tomáš
Rozbalit Rozbalit vše Re: SQL dotaz - 2 tabulky

Asi tak nějak (čistě syntaktický přepis Vašeho zadání):

select t1.Rec
from TAB1 as t1
join TAB2 as t2 
  on t1.Rec=t2.Rec and t.Krok='KrokA' and t1.Typ=1
left join ( 
  select Rec,min(Datum) as dt
  from TAB2
  where Krok='KrokB'
  group by Rec
) as t3
 on t2.Rec=t3.Rec and t2.Datum < t3.dt 
where t3.Rec is null  

Kdyby jste uvedl co je v TAB2 (primárním) klíčem, tak to možná šlo ještě jednodušeji ( jedna agregace plus jeden join ).

21.3.2013 10:35 Petr
Rozbalit Rozbalit vše Re: SQL dotaz - 2 tabulky
Děkuji, tohle vypadá nadějně, ale potřebuji z TAB2 najít poslední (s nejvyšším datem) záznam, kde Krok = 'KrokA' a pak už po něm není žádný záznam 'KrokB'
21.3.2013 21:19 Tomáš
Rozbalit Rozbalit vše Re: SQL dotaz - 2 tabulky

Zase jen syntaktický přepis (bez jakékoliv znalosti skutečného problému)

select
  Rec
  ,max(case when Krok='KrokA' then Date else null end ) -- poslední datum pro KrokA
from TAB2
group by Rec
having  
  max( case when Krok='KrokA' then Date else null end )  -- nejvyssi datum pro KrokA ( = poslední)
  > -- je větší než
  max( case when Krok='KrokB' then Date else null end )  -- nejvyšší datum pro KrokB
21.3.2013 21:33 Tomáš
Rozbalit Rozbalit vše Re: SQL dotaz - 2 tabulky

Ještě jsem zapoměl na dva okrajové případy, kdy jeden z kroků není k dispozici

select
  Rec
  ,max(case when Krok='KrokA' then Date else null end ) -- poslední datum pro KrokA
from TAB2
group by Rec
having
  max( case when Krok='KrokA' then Date else null end ) is not null -- existuje krokA
 and -- a zároveň
  (
     max( case when Krok='KrokA' then Date else null end )  -- nejvyssi datum pro KrokA ( = poslední)
     > -- je větší než
     max( case when Krok='KrokB' then Date else null end )  -- nejvyšší datum pro KrokB
  or -- nebo se krokB nedohledá
     max( case when Krok='KrokB' then Date else null end ) is NULL 
 
  )

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.