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íží...
dnes 11:44 | Zajímavý projekt

Na Indiegogo byla spuštěna kampaň na podporu herní mini konzole a multimediálního centra RetroEngine Sigma od Doyodo. Předobjednat ji lze již od 49 dolarů. Požadovaná částka 20 000 dolarů byla překonána již 6 krát. Majitelé mini konzole si budou moci zahrát hry pro Atari VCS 2600, Sega Genesis nebo NES. Předinstalováno bude multimediální centrum Kodi.

Ladislav Hagara | Komentářů: 0
dnes 00:10 | Nová verze

Byla vydána verze 4.7 redakčního systému WordPress. Kódové označením Vaughan bylo vybráno na počest americké jazzové zpěvačky Sarah "Sassy" Vaughan. Z novinek lze zmínit například novou výchozí šablonu Twenty Seventeen, náhledy pdf souborů nebo WordPress REST API.

Ladislav Hagara | Komentářů: 0
včera 12:00 | Zajímavý projekt

Projekt Termbox umožňuje vyzkoušet si linuxové distribuce Ubuntu, Debian, Fedora, CentOS a Arch Linux ve webovém prohlížeči. Řešení je postaveno na projektu HyperContainer. Podrobnosti v často kladených dotazech (FAQ). Zdrojové kódy jsou k dispozici na GitHubu [reddit].

Ladislav Hagara | Komentářů: 23
včera 11:00 | Bezpečnostní upozornění

Byly zveřejněny informace o bezpečnostní chybě CVE-2016-8655 v Linuxu zneužitelné k lokální eskalaci práv. Chyba se dostala do linuxového jádra v srpnu 2011. V upstreamu byla opravena minulý týden [Hacker News].

Ladislav Hagara | Komentářů: 2
5.12. 22:00 | Komunita

Přibližně před měsícem bylo oznámeno, že linuxová distribuce SUSE Linux Enterprise Server (SLES) běží nově také Raspberry Pi 3 (dokumentace). Obraz verze 12 SP2 pro Raspberry Pi 3 je ke stažení zdarma. Pro registrované jsou po dobu jednoho roku zdarma také aktualizace. Dnes bylo oznámeno, že pro Raspberry Pi 3 je k dispozici také nové openSUSE Leap 42.2 (zprávička). K dispozici je hned několik obrazů.

Ladislav Hagara | Komentářů: 6
5.12. 06:00 | Zajímavý software

OMG! Ubuntu! představuje emulátor terminálu Hyper (GitHub) postavený na webových technologiích (HTML, CSS a JavaScript). V diskusi k článku je zmíněn podobný emulátor terminálu Black Screen. Hyper i Black Screen používají framework Electron, stejně jako editor Atom nebo vývojové prostředí Visual Studio Code.

Ladislav Hagara | Komentářů: 50
5.12. 06:00 | Zajímavý článek

I letos vychází řada ajťáckých adventních kalendářů. QEMU Advent Calendar 2016 přináší každý den nový obraz disku pro QEMU. Programátoři se mohou potrápit při řešení úloh z kalendáře Advent of Code 2016. Kalendáře Perl Advent Calendar 2016 a Perl 6 Advent Calendar přinášejí každý den zajímavé informace o programovacím jazyce Perl. Stranou nezůstává ani programovací jazyk Go.

Ladislav Hagara | Komentářů: 10
3.12. 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ářů: 17
3.12. 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ářů: 26
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%)
 (8%)
 (5%)
 (3%)
Celkem 781 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: slouceni dvou dotazu

25.11.2009 07:51 Leoš Literák | skóre: 74 | blog: LL | Praha
slouceni dvou dotazu
Přečteno: 592×
Ahoj, mam dalsi dotaz pro vyvoj abicka, holt sql neni moje parketa. Mam dva dotazy, ktere samostatne funguji. Chtel bych to zoptimalizovat, abych je nemusel spoustet a zpracovavat samostatne, ale mel jen jeden dotaz se dvema hodnotovymi sloupecky. Lisi se jen jednou podminkou rovnosti S.pridal,RS.kdo a obsahuji count a group by. Databaze mysql.
select K.autor,count(*) from komentar K, reseni RS, relace R, spolecne S where 
RS.zaznam=R.potomek and R.typ_potomka='Z' and R.predek=S.cislo and S.typ='P' and 
(S.pridal<>RS.kdo or S.pridal is null) and K.cislo=RS.komentar and RS.kdo<>K.autor group by K.autor
| autor | count(*) |
+-------+----------+
|     1 |        1 |
|    11 |        1 |
|    20 |        2 |
|   151 |        4 |
|   595 |        2 |
select K.autor,count(*) from komentar K, reseni RS, relace R, spolecne S where 
RS.zaznam=R.potomek and R.typ_potomka='Z' and R.predek=S.cislo and S.typ='P' and 
S.pridal=RS.kdo and K.cislo=RS.komentar and RS.kdo<>K.autor group by K.autor
| autor | count(*) |
+-------+----------+
|     1 |        3 |
|   151 |        2 |
|   421 |        1 |
|   595 |        2 |
|   868 |        1 |
Chtel bych dostat takovyto vysledek:
| autor | count(*) | count(*) |
+-------+----------+----------+
|     1 |        3 |        1 |
|   151 |        2 |        4 |
|   421 |        1 |        0 |
|   595 |        2 |        2 |
|   868 |        1 |        3 |
Diky
Zakladatel tohoto portálu. Twitter, LinkedIn, blog, StackOverflow

Řešení dotazu:


Odpovědi

25.11.2009 08:32 kulik
Rozbalit Rozbalit vše Re: slouceni dvou dotazu
Myslim ze by melo jit ty lisici se podminky vytahnout do agregace. Nevim jak se to udela v mysql, ale v Oracle by to mohlo vypadat takto (lepsi nez decode je case, ale pravdepodobnost vyskytu jeho analogie v mysql vidim jako mensi):
select K.autor,        
       sum(decode(S.pridal, null, 1, RS.kdo, 0, 1)) cnt1,
       sum(decode(S.pridal, null, 0, RS.kdo, 1, 0)) cnt2       
from komentar K, reseni RS, relace R, spolecne S 
where 
RS.zaznam=R.potomek and R.typ_potomka='Z' and R.predek=S.cislo and S.typ='P' and K.cislo=RS.komentar and RS.kdo<>K.autor group by K.autor

25.11.2009 16:52 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: slouceni dvou dotazu
+1 aj s CASE :-) +10 za verziu s triggrami.
25.11.2009 20:24 Leoš Literák | skóre: 74 | blog: LL | Praha
Rozbalit Rozbalit vše Re: slouceni dvou dotazu
decode mysql nema, case ano. Tento prikaz skonci chybou. Jak by to vypadalo s case? Dik
Zakladatel tohoto portálu. Twitter, LinkedIn, blog, StackOverflow
25.11.2009 10:07 posejdon
Rozbalit Rozbalit vše Re: slouceni dvou dotazu
myslim, ze mysql 5 a vyssi by si melo poradit s timto, nicmene reseni navrzene vyse by melo byt optimalnejsi (jedinny pruchod tabulky), mysql pouziti CASE umoznuje a v tomto pripade by mohlo zvysit prehlednost kodu (resp umysl bude bit do oci na 1. pohled).

select t1.autor, t1.c1, t2.c2

FROM

(select K.autor,count(*) as c1 from komentar K, reseni RS, relace R, spolecne S where

RS.zaznam=R.potomek and R.typ_potomka='Z' and R.predek=S.cislo and S.typ='P' and

(S.pridal<>RS.kdo or S.pridal is null) and K.cislo=RS.komentar and RS.kdo<>K.autor group by K.autor) t1

JOIN

(select K.autor,count(*) as c2 from komentar K, reseni RS, relace R, spolecne S where

RS.zaznam=R.potomek and R.typ_potomka='Z' and R.predek=S.cislo and S.typ='P' and

S.pridal=RS.kdo and K.cislo=RS.komentar and RS.kdo<>K.autor group by K.autor) t2

ON t2.autor = t1.autor
25.11.2009 20:27 Leoš Literák | skóre: 74 | blog: LL | Praha
Rozbalit Rozbalit vše Re: slouceni dvou dotazu
Dik, tohle funguje, explain ukazuje deset tabulek. Zatim je tam malo dat, takze rychlost neni prekazkou. Jsem perfekcionista, zajimala by me ta varianta s case.
Zakladatel tohoto portálu. Twitter, LinkedIn, blog, StackOverflow
25.11.2009 22:28 posejdon
Rozbalit Rozbalit vše Re: slouceni dvou dotazu
No myslel jsem, ze nakopnuti od kolegy a dokumentace k MySQL postaci, ale zkusim nazorny priklad, vzdyt je to pro dobrou vec (a zvladnou to i prehistoricke vydani MySQL)
select K.autor,
       sum( CASE WHEN S.pridal=RS.kdo and K.cislo=RS.komentar THEN 1 ELSE 0 END ) cnt1,
       sum( CASE WHEN S.pridal<>RS.kdo or S.pridal is null THEN 1 ELSE 0 END ) cnt2
from komentar K, reseni RS, relace R, spolecne S 
where RS.zaznam=R.potomek 
 and R.typ_potomka='Z' 
 and R.predek=S.cislo 
 and S.typ='P' 
 and K.cislo=RS.komentar 
 and RS.kdo<>K.autor 
group by K.autor
Řešení 1× (Leoš Literák (tazatel))
25.11.2009 22:55 posejdon
Rozbalit Rozbalit vše Re: slouceni dvou dotazu
Jeste bych se chtel primluvit za to, abys pouzival ke spojovani tabulek JOIN namisto kartezskeho soucinu omezeneho v klauzuli where, nebot se celkem spatne hleda, co je spojeno s cim (ale na rychlost dotazu to nema vliv a je to spise o zvyku, ja takto rovnou vidim relaci a nemusim to hledat v podminkach)
SELECT K.autor,
       SUM( CASE WHEN S.pridal = RS.kdo AND K.cislo = RS.komentar THEN 1 ELSE 0 END ) cnt1,
       SUM( CASE WHEN S.pridal <> RS.kdo OR S.pridal IS NULL THEN 1 ELSE 0 END ) cnt2
FROM komentar K
JOIN reseni RS ON RS.komentar = K.cislo
JOIN relace R ON R.potomek = RS.zaznam 
              AND R.typ_potomka='Z'
JOIN spolecne S ON s.cislo = r.predek
                AND S.typ='P' 
WHERE RS.kdo <> K.autor 
GROUP BY K.autor
26.11.2009 06:16 Leoš Literák | skóre: 74 | blog: LL | Praha
Rozbalit Rozbalit vše Re: slouceni dvou dotazu
Ahoj, mozna by stacila, ale nemel jsem klid na praci (dve deti) a hlavne bych musel zjistit, k cemu ten oracle decode vlastne slouzi. Pak bych mel sanci. Kazdopadne dekuju, funguje to, druhy priklad uz v explain ma jen ctyri tabulky pouzivajici klice.

Pokud jde o ty joiny, souhlasim, ze jejich pouziti cini dotazy citelnejsi. Maji jeste nejake dalsi vyhody oproti ekvivalentnim dotazum s podminkami ve where? Treba lepsi vykon? Pak by melo smysl prepsat vsechny SQL dotazy.
Zakladatel tohoto portálu. Twitter, LinkedIn, blog, StackOverflow
26.11.2009 09:12 kulik
Rozbalit Rozbalit vše Re: slouceni dvou dotazu
Vykon by mel byt stejny, jde jen o ruznou formu zapisu tehoz. Ale samozrejme nelze nikdy uplne vyloucit, ze konkretni stroj se k tomu postavi ruzne, treba kvuli nejakemu bugu apod.
26.11.2009 09:52 posejdon
Rozbalit Rozbalit vše Re: slouceni dvou dotazu
Jde o to, jestli se v tom hrabes sam, nebo to ma nekdy nekdo po tobe louskat. A taky jde o ten zvyk. Znam nektere matadory, kteri join nepouzivaji, ale na druhou stranu si pomahaji treba tim, ze ty relacni podminky davaji na prvni misto a jeste je odlisuji od ostatnich tim, ze je pisi cele kapitalkama. Takovy dotaz se uz cte lip, nicmene ten JOIN navic hlida kodera, aby nezapomnel tu vazbu uvest, coz se treba pri spojeni 10 tabulek stane raz dva.

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.