Společnost Red Hat slaví 30 let.
Ve věku 91 let zemřel izraelský informatik Ja'akov Ziv, spolutvůrce bezztrátových kompresních algoritmů LZ77, LZ78 a LZW (Lempel–Ziv–Welch).
Byla představena nová Arduino deska Arduino UNO R4 s 32bitovým MCU RA4M1 (Arm Cortex-M4). Desku lze zatím získat pouze v rámci early access programu.
Operační systém MidnightBSD, fork FreeBSD optimalizovaný pro desktop s prostředím Xfce, byl vydán ve verzi 3.0. Přehled novinek v poznámkách k vydání.
Na GOG.com běží Spring Sale. Při té příležitosti lze získat zdarma počítačovou hru Neurodeck: Psychological Deckbuilder (ProtonDB).
Alex Ellis upozornil 15. března, že firma Docker se chystala zrušit bezplatný hosting open-source projektů na Docker Hubu. Po vlně odporu se představitelé firmy omluvili a posléze byl původní záměr odvolán.
Ve věku 94 let zemřel Gordon Moore, mj. spoluzakladatel společnosti Intel a autor Moorova zákona.
Mercurial (Wikipedie), software pro SCM (Source Code Management), byl vydán ve verzi 6.4. Přehled novinek v poznámkách k vydání. Ve dnech 5. až 7. dubna proběhne konference Mercurial Paris.
Byly rozdány Ceny Velkého bratra (Big Brother Awards) za rok 2022 pro největší slídily pořádané nevládní organizací Iuridicum Remedium. Dlouhodobý slídil: Microsoft. Firemní slídil: Seznam. Úřední slídil: Nejvyšší správní soud. Výrok Velkého bratra: Marian Jurečka. Pozitivní cena: NoLog.
Byla představena online vzdělávací platforma Ada Computer Science pro učitele, studenty a kohokoli, kdo se zajímá o informatiku. Stojí za ní Raspberry Pi Foundation a Univerzita v Cambridgi.
table1 table2 --------------- ----------------- id int id int /* sth */ table1_id int str2 textData 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 elephantPokud dotazu předám ca, vrátí se 1 a 2.
Předem děkuji.
Řešení dotazu:
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.
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
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ý.)
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.
Tiskni
Sdílej: