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í
×
včera 21:55 | Komunita

Nadace pro svobodný software (FSF) oznámila aktualizaci seznamu prioritních oblastí (changelog), na které by se měli vývojáři a příznivci svobodného softwaru zaměřit. Jsou to například svobodný operační systém pro chytré telefony, hlasová a video komunikace nebo softwarový inteligentní osobní asistent.

Ladislav Hagara | Komentářů: 1
včera 16:44 | Nová verze

Byla vydána verze 2.0.0 knihovny pro vykreslování grafů v programovacím jazyce Python Matplotlib (Wikipedie, GitHub). Přehled novinek a galerie grafů na stránkách projektu.

Ladislav Hagara | Komentářů: 0
včera 15:33 | Komunita

V australském Hobartu probíhá tento týden konference linux.conf.au 2017. Na programu je celá řada zajímavých přednášek. Sledovat je lze online.

Ladislav Hagara | Komentářů: 0
včera 10:20 | Zajímavý článek

Pavel Tišnovský se v dvoudílném článku na MojeFedora.cz věnuje bitmapovým (rastrovým) grafickým editorům ve Fedoře. V prvním dílu se věnuje editorům MyPaint, MtPaint, Pinta, XPaint, Krita a GIMP. V pokračování pak editorům GNU Paint (gpaint), GrafX2, KolourPaint, KIconEdit a Tux Paint.

Ladislav Hagara | Komentářů: 1
16.1. 17:11 | Komunita

Byl proveden bezpečnostní audit svobodného IMAP a POP3 serveru Dovecot (Wikipedie). Audit byl zaplacen z programu Mozilla Secure Open Source a provedla jej společnost Cure53. Společnost Cure53 byla velice spokojena s kvalitou zdrojových kódu. V závěrečné zprávě (pdf) jsou zmíněny pouze 3 drobné a v upstreamu již opravené bezpečnostní chyby.

Ladislav Hagara | Komentářů: 0
16.1. 15:30 | IT novinky

Nadace Raspberry Pi představila na svém blogu Raspberry Pi Compute Module 3 (CM3 a CM3L), tj. zmenšené Raspberry Pi vhodné nejenom pro průmyslové využití. Jedná se o nástupce Raspberry Pi Compute Module (CM1) představeného v dubnu 2014. Nový CM3 vychází z Raspberry Pi 3 a má tedy dvakrát více paměti a desetkrát větší výkon než CM1. Verze CM3L (Lite) je dodávána bez 4 GB eMMC flash paměti. Uživatel si může připojit svou vlastní. Představena byla

… více »
Ladislav Hagara | Komentářů: 1
16.1. 01:23 | Nová verze

Oficiálně bylo oznámeno vydání verze 3.0 multiplatformního balíku svobodných kancelářských a grafických aplikací Calligra (Wikipedie). Větev 3 je postavena na KDE Frameworks 5 a Qt 5. Krita se osamostatnila. Z balíku byly dále odstraněny aplikace Author, Brainstorm, Flow a Stage. U Flow a Stage se předpokládá jejich návrat v některé z budoucích verzí Calligry.

Ladislav Hagara | Komentářů: 7
15.1. 15:25 | Nová verze

Bylo oznámeno vydání první RC (release candidate) verze instalátoru pro Debian 9 s kódovým názvem Stretch. Odloženo bylo sloučení /usr jako výchozí nastavení v debootstrap. Vydán byl také Debian 8.7, tj. sedmá opravná verze Debianu 8 s kódovým názvem Jessie.

Ladislav Hagara | Komentářů: 6
15.1. 13:37 | Zajímavý projekt

1. ledna byl představen projekt Liri (GitHub). Jedná se o spojení projektů Hawaii, Papyros a původního projektu Liri s cílem vyvíjet operační systém (linuxovou distribuci) a aplikace s moderním designem a funkcemi. Včera byl představen Fluid 0.9.0 a také Vibe 0.9.0. Jedná se o toolkit a knihovnu pro vývoj multiplatformních a responzivních aplikací podporující Material Design (Wikipedie) a volitelně také Microsoft Design Language (designový jazyk Microsoft) [reddit].

Ladislav Hagara | Komentářů: 8
14.1. 00:33 | Zajímavý software

Google na svém blogu věnovaném open source představil knihovnu pro komprimaci a dekomprimaci 3D grafiky s názvem Draco. Knihovna bude využívána například v aplikacích pro virtuální a rozšířenou realitu. Porovnání Draco s gzip na YouTube. Zdrojové kódy Draco jsou k dispozici na GitHubu pod licencí Apache 2.0.

Ladislav Hagara | Komentářů: 5
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (10%)
 (2%)
 (75%)
 (3%)
 (10%)
Celkem 304 hlasů
 Komentářů: 24, poslední včera 10:14
    Rozcestník
    Reklama

    Dotaz: MySQL – výběr na základě dat v jiné tabulce

    30.6.2013 11:17 Tref
    MySQL – výběr na základě dat v jiné tabulce
    Přečteno: 1213×
    Dobrý den, mohl by mi, prosím, někdo poradit s tímto? Řekněme, že mám dvě tabulky:
    table1                   table2
    ---------------          -----------------
    id      int              id           int
    /*     sth   */          table1_id    int
                             str2         text
    Data potřebuji pouze z table1, ovšem jen ze řádků, jejichž id odpovídá table1_id. Podmínkou je LIKE %% v str2, nejsnáze asi vysvětleno příkladem:
    table1
    ---------------
    1     /* sth */
    2     /* sth */
    
    table2
    ---------------
    1     1     cat
    2     1     dog
    3     1     horse
    4     2     cat
    5     2     dog
    6     2     elephant
    
    Pokud dotazu předám ca, vrátí se 1 a 2.
    Pokud dotazu předám ca a g, vrátí se taktéž 1 a 2.
    Pokud dotazu předám ca a or, vrátí se 1.
    Pokud dotazu předám ca a abcd, nevrátí se nic. Vstupů v jednom dotazu může být neomezeně a výkon je důležitý (table1 obsahuje přes 160 tisíc řádků, table2 přes 280 tisíc).

    Předem děkuji.


    Řešení dotazu:


    Odpovědi

    wamba avatar 30.6.2013 13:22 wamba | skóre: 37 | blog: wamba
    Rozbalit Rozbalit vše Re: MySQL – výběr na základě dat v jiné tabulce
    no napadá mě použít GROUP_CONCAT
    This would have been so hard to fix when you don't know that there is in fact an easy fix.
    30.6.2013 13:41 Kit
    Rozbalit Rozbalit vše Re: MySQL – výběr na základě dat v jiné tabulce
    SELECT * FROM table1 WHERE
        id IN (SELECT table1_id FROM table2 WHERE str2 LIKE '%orse%') AND
        id IN (SELECT table1_id FROM table2 WHERE str2 LIKE '%at%');
    
    Pokud záleží na výkonu, není vhodné EAV používat.
    30.6.2013 15:33 Tref
    Rozbalit Rozbalit vše Re: MySQL – výběr na základě dat v jiné tabulce
    Děkuji za funkční řešení.
    15.7.2013 09:13 hyperventil
    Rozbalit Rozbalit vše Re: MySQL – výběr na základě dat v jiné tabulce
    1. misto (select ... and select ...) pouzij (like ... or like ...)

    2. v pripade vetsich tabulek timto spolehlive zabijes mysql server. spravne reseni je pouzit join misto subselectu ve where casti.
    rADOn avatar 2.7.2013 17:48 rADOn | skóre: 44 | blog: bloK | Praha
    Rozbalit Rozbalit vše Re: MySQL – výběr na základě dat v jiné tabulce
    SELECT DISTINCT t1.* FROM table1 t1
    JOIN table2 t2 ON t2.table1_id = t1.id
    WHERE 1=1
    AND t2.str LIKE '%whatever%'
    AND t2.str LIKE '%whateverelse%'
    
    Na vykon sere pes… pokud tam mas LIKE %% tak to stejne skonci fullscanem. Jestli se snazis zbastlit si made-by-samodoma fulltext, tak se snazis marne :-)

    "2^24 comments ought to be enough for anyone" -- CmdrTaco
    2.7.2013 22:44 axel
    Rozbalit Rozbalit vše Re: MySQL – výběr na základě dat v jiné tabulce
    Toto urcite nefunguje.
    15.7.2013 15:38 j
    Rozbalit Rozbalit vše Re: MySQL – výběr na základě dat v jiné tabulce
    Toto zcela na 100% funguje a narozdil od tech hruz vejs je to jediny spravny reseni. Jen bych tam pridal left join, pokud je vazba 1:n (pripadne n:n) a ne 1:1.

    Jenom nevim, nac tam davat 1=1 ... ;D.

    A jak bylo receno, libovolnej like ... zabije vykon zcela spolehlive.
    15.7.2013 16:01 Kit
    Rozbalit Rozbalit vše Re: MySQL – výběr na základě dat v jiné tabulce
    Možná to na 100 % funguje, ale zároveň je to 100% špatně, protože to nesplňuje zadání. Přečti si ho ještě jednou a pozorněji.
    rADOn avatar 15.7.2013 19:00 rADOn | skóre: 44 | blog: bloK | Praha
    Rozbalit Rozbalit vše Re: MySQL – výběr na základě dat v jiné tabulce
    1=1 je vzdy true a query optimizer to vyhodi. je to dobry jen k tomu ze kdyz chci zakomentovat prvni podminku za tim tak nemusim odmazavat prebytecne ANDitko a pak zase naopak. ditto kdyz skladas strojove dotaz pro nejaky filtr.
    "2^24 comments ought to be enough for anyone" -- CmdrTaco
    Josef Kufner avatar 16.7.2013 09:16 Josef Kufner | skóre: 66
    Rozbalit Rozbalit vše Re: MySQL – výběr na základě dat v jiné tabulce
    Na tohle je lepší používat něco jako je FluentPDO. Tedy přiměřeně chytré lepítko fragmentů do výsledného selectu, které ví, v jakém pořadí je má slepit, takže lze pohodlně přidávat podmínky dle aktuálních potřeb (např. různá dynamická filtrování).
    Hello world ! Segmentation fault (core dumped)
    16.7.2013 10:46 Lyco
    Rozbalit Rozbalit vše Řešení s JOINem
    Jde to i tím JOINem, ale musí se na to jinak:
    SELECT id FROM table1 JOIN t2 ON table1.id = table2.t1_id WHERE 
      str2 LIKE '%ca%' 
      OR str2 LIKE '%or%' 
    GROUP BY t1.id HAVING count(str2) = $count;
    kde $count je počet podmínek (v tomhle případě 2).

    Každopádně souhlasím s předřečníky, že jakmile se používá LIKE '%něco%' tak nemá smysl výkon řešit - tohle bude pomalé pro jakýkoli netriviální počet záznamů, protože se nedá použít index. (Tedy alespoň v MySQL - PostgreSQL umí použít trigramový index, pokud to něco má aspoň 3 znaky. Tam to bude celkem rychlé, ale ten index bude celkem ohromný.)
    Tarmaq avatar 16.7.2013 11:46 Tarmaq | skóre: 39
    Rozbalit Rozbalit vše Re: Řešení s JOINem
    S tim uvedenym joinem to nefunguje spravne. Nepocita totiz s variantou, ze pro jeden zaznam z table1 matchne vice zaznamu v table2. Pro data uvedena v zadani uvadim priklad:
    SELECT t1.id FROM table1 t1
    JOIN table2 t2 ON t1.id = t2.table1_id WHERE
      t2.str2 LIKE '%t%'
    GROUP BY t1.id HAVING count(t2.str2) = 1;
    
    Vrati jen 1, pritom by melo vratit i 2.
    Don't panic!

    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.