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 17:02 | Pozvánky

Přijďte si popovídat o open source obecně a openSUSE konkrétně s dalšími uživateli a vývojáři. Oslava nového vydání openSUSE Leap se uskuteční 16. prosince od 17:00 v nových prostorách firmy SUSE v Praze. K dispozici bude nějaké občerstvení a DVD pro ty, kdo je sbírají nebo ještě mají mechaniku. Po párty v kanceláři se bude pokračovat v některé z hospod v okolí.

Miška | Komentářů: 7
dnes 14:55 | Zajímavý software

Byla vydána verze Alpha 1.0 otevřeného operačního systému pro chytré hodinky AsteroidOS. Podporovány jsou hodinky LG G Watch, LG G Watch Urbane, Asus ZenWatch 2 a Sony Smartwatch 3. Ukázka ovládání hodinek na YouTube. Jaroslav Řezník přednášel o AsteroidOS na chytrých hodinkách (videozáznam) na letošní konferenci OpenAlt.

Ladislav Hagara | Komentářů: 0
dnes 13:30 | Zajímavý software

Byly uvolněny zdrojové kódy známé rogue-like hry DoomRL. Počátky hry jsou v roce 2002. Je napsána ve FreePascalu a zdrojový kód je nyní k dispozici na GitHubu pod licencí GNU GPL 2.0. Autor pracuje na nové hře Jupiter Hell, která je moderním nástupcem DoomRL a na jejíž vývoj shání peníze prostřednictvím Kickstarteru.

Blaazen | Komentářů: 0
dnes 13:15 | Pozvánky

Přijďte s námi oslavit vydání Fedory 25. Na programu budou přednášky o novinkách, diskuse, neřízený networking atd. Release Party se bude konat 16. prosince v prostorách společnosti Etnetera. Na party budou volně k dispozici také propagační materiály, nová DVD s Fedorou 25 a samozřejmě občerstvení. Přednášky budou probíhat v češtině. Pro více informací se můžete podívat na web MojeFedora.cz. Jen připomínám, že tentokrát jsme zavedli

… více »
frantisekz | Komentářů: 0
včera 16:38 | Komunita

Byly zveřejněny videozáznamy přednášek a workshopů z letošní konference OpenAlt konané 5. a 6. listopadu v Brně. K videozáznamům lze přistupovat ze stránky na SuperLectures nebo přes program konference, detaily o vybrané přednášce nebo workshopu a dále kliknutím na ikonku filmového pásu. Celkově bylo zpracováno 65 hodin z 89 přednášek a workshopů.

Ladislav Hagara | Komentářů: 0
včera 11:30 | Komunita

Bylo oznámeno, že bude proveden bezpečnostní audit zdrojových kódů open source softwaru pro implementaci virtuálních privátních sítí OpenVPN. Audit provede Matthew D. Green (blog), uznávaný kryptolog a profesor na Univerzitě Johnse Hopkinse. Auditována bude verze 2.4 (aktuálně RC 1, stabilní verze je 2.3.14). Audit bude financován společností Private Internet Access [reddit].

Ladislav Hagara | Komentářů: 4
včera 06:00 | Komunita

Na YouTube byl publikován Blender Institute Reel 2016, ani ne dvouminutový sestřih z filmů, které vznikly za posledních 10 let díky Blender Institutu. V institutu aktuálně pracují na novém filmu Agent 327. Dění kolem filmu lze sledovat na Blender Cloudu. Videoukázka Agenta 327 z června letošního roku na YouTube.

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

Minulý týden byly vydány verze 1.2.3 a 1.1.7 webového poštovního klienta Roundcube. V oznámení o vydání bylo zmíněno řešení bezpečnostního problému nalezeného společností RIPS a souvisejícího s voláním funkce mail() v PHP. Tento týden byly zveřejněny podrobnosti. Útočník mohl pomocí speciálně připraveného emailu spustit na serveru libovolný příkaz. Stejně, jak je popsáno v článku Exploit PHP’s mail() to get remote code execution z roku 2014.

Ladislav Hagara | Komentářů: 1
8.12. 16:00 | Nová verze

Byla vydána verze 0.98 svobodného nelineárního video editoru Pitivi. Z novinek lze zmínit například přizpůsobitelné klávesové zkratky. Videoukázka práce s nejnovější verzí Pitivi na YouTube.

Ladislav Hagara | Komentářů: 1
8.12. 15:00 | Zajímavý software

Stop motion je technika animace, při níž je reálný objekt mezi jednotlivými snímky ručně upravován a posouván o malé úseky, tak aby po spojení vyvolala animace dojem spojitosti. Jaký software lze pro stop motion použít na Linuxu? Článek na OMG! Ubuntu! představuje Heron Animation. Ten bohužel podporuje pouze webové kamery. Podpora digitálních zrcadlovek je začleněna například v programu qStopMotion.

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

Dotaz: Mysql dotaz

25.9.2012 15:23 Ex
Mysql dotaz
Přečteno: 242×
Ahoj,

Chtel bych poprosit o radu se sestavenim sql dotazu.

Zjednodusene rekneme ze jsou dve tabulky:

users (se sloupcem id)

items (se sloupcem user (cizi klic do users) a item)

Potrebuji dotaz, najit usera ktery ma v tabulce items radky s item 1 a zaroven 5.

Diky moc za pomoc

Odpovědi

25.9.2012 15:44 kuka
Rozbalit Rozbalit vše Re: Mysql dotaz
Napriklad muzes pouzit exists.
25.9.2012 16:08 Dejv | skóre: 36 | blog: Jak ten blog nazvat ... ? | Ostrava
Rozbalit Rozbalit vše Re: Mysql dotaz
Vykonove asi nic moc, ale fungovat by mohlo (pokud jsem pozadavek spravne pochopil)
select ...
from users u
   inner join items i1 on i1.user=u.id and i.item=1
   inner join items i5 on i1.user=u.id and i.item=5
Pevne verim, ze zkusenejsi uzivatele me s mymi napady usmerni a poslou tam, kam tyto napady patri...
Tarmaq avatar 25.9.2012 16:14 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Mysql dotaz
hh koukam ze jsi byl rychlejsi, navic to mame skoro stejne :] akorat mas spatne aliasy v tom porovnavani na item.. ale to se stane no ;]
Don't panic!
26.9.2012 07:40 Dejv | skóre: 36 | blog: Jak ten blog nazvat ... ? | Ostrava
Rozbalit Rozbalit vše Re: Mysql dotaz
Jo, mam :-) Samozrejme tam ma byt i1 a i5, tak jak to mas ty :-)
Pevne verim, ze zkusenejsi uzivatele me s mymi napady usmerni a poslou tam, kam tyto napady patri...
Tarmaq avatar 25.9.2012 16:12 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Mysql dotaz
SELECT DISTINCT u.id
FROM users u
INNER JOIN items i1 ON i1.user = u.id AND i1.item = 1
INNER JOIN items i5 ON i5.user = u.id AND i5.item = 5
Don't panic!
25.9.2012 17:24 kuka
Rozbalit Rozbalit vše Re: Mysql dotaz
Kazdy distinct je podezrely a tento obzvlast. Bud tam neni potreba (je zaruceno, ze kazdy item je pro uzivatele v items nejvyse jednou), nebo tam potreba je, a pak by se melo misto nej pouzit exists.
25.9.2012 16:26 Ex
Rozbalit Rozbalit vše Re: Mysql dotaz
Diky za tento napad, bez takoveho nasobneho spojovani to mozne neni? Protoze 2 hodnoty item byl priklad, potreboval bych ji i vice, a pak mi to uz neprijde jako vhodne reseni.
25.9.2012 17:19 kuka
Rozbalit Rozbalit vše Re: Mysql dotaz
Mozne to je i bez "takoveho nasobneho spojovani". Treba kdybys napsal, co potrebujes, tak by ti nekdo poradil "vhodne" reseni. Toto se ti nelibi proc - kvuli vykonu, kvuli tomu, ze nevis, kolik hodnot bude, nebo treba jen esteticky?
25.9.2012 18:57 Ex
Rozbalit Rozbalit vše Re: Mysql dotaz
Ano jak rikas, vykonove, myslim si ze pri vice polozkach by to nemuselo byt uplne ono.
25.9.2012 19:27 kuka
Rozbalit Rozbalit vše Re: Mysql dotaz
No a mas tuto domenku necim podlozenou? Pokud budes chtit vsechny uzivatele s danou vlastnosti, bude pravdepodobne nejvykonnejsi group by dotaz pouze pres tabulku items. Pokud budes chtit jen pro jednoho nebo nekolik uzivatelu overit vlastnost, bude temer jiste nejefektivnejsi opakovane spojeni users s items (primo nebo pres exists), jak zde bylo navrhovano (pochopitelne za predpokladu, ze tam bude vhodny index). Samozrejme zalezi i na poctech zaznamu, pro radove desitky az stovky nebudou nejspis zadne rozdily vubec meritelne. V nekterych pripadech muze byt nejlepsi proceduralni zpracovani mimo databazi, pokud prichazi v uvahu.
25.9.2012 17:33 Kit
Rozbalit Rozbalit vše Re: Mysql dotaz
Jde to i pro vícenásobné spojování a nemusí to být pomalé. Pokud bys to chtěl bez toho, musel bys opustit model EAV a navrhnout databázi pořádně.

Další možností je použití hstore v PostgreSQL.
26.9.2012 10:47 kaaja | skóre: 22 | blog: Sem tam něco | Podbořany, Praha
Rozbalit Rozbalit vše Re: Mysql dotaz
Protože nemám mysql, tak nevím jestli to bude fungovat, ale na jiné db určitě bude
SELECT DISTINCT u.id
FROM users u
where (select count(*) from items i where i.item in (..polozky..)  ) = pocet_polozek
26.9.2012 11:44 kuka
Rozbalit Rozbalit vše Re: Mysql dotaz
Tak tohle urcite nebude fungovat nikde, napriklad se tam jaksi nevyskytuje zadna podminka na tu tabulku users. Myslenka jako takova je pouzitelna, ovsem spravne realizovana vede na jednoduchy group by dotaz nad items
select user_id from items 
where item in (..polozky..)   
group by user_id 
having count(*) = pocet_polozek
26.9.2012 15:17 kaaja | skóre: 22 | blog: Sem tam něco | Podbořany, Praha
Rozbalit Rozbalit vše Re: Mysql dotaz
Sorry, psal jsem to na sucho a vypadlo mi to

SELECT DISTINCT u.id
FROM users u
where (select count(*) from items i where i.item in (..polozky..) and i.user = u.id  ) = pocet_polozek
26.9.2012 07:51 George O.
Rozbalit Rozbalit vše Re: Mysql dotaz
Mnohem jednodussi bude navrhnout db jako clovek, pak ti bude stacit jednoduchy inner join :-)
26.9.2012 08:51 Kit
Rozbalit Rozbalit vše Re: Mysql dotaz
Existuje pár typů aplikací, ve kterých to nejde tak jednoduše. Například obchod s komponentami PC. Každý díl může mít jinou sadu parametrů a předělávat databázi s každým novým typem zboží nemusí být levná záležitost. Výhodnější je navrhnout univerzální strukturu, kterou bude moct obchodník pracovat dle potřeby.
Josef Kufner avatar 26.9.2012 15:35 Josef Kufner | skóre: 66
Rozbalit Rozbalit vše Re: Mysql dotaz
Na tohle sice slouží EAV, ale je jednodušší naučit aplikaci používat ALTER a různé tabulky pro velmi odlišné typy zboží (pak stačí jeden join podle typu). Sice to není zrovna krásné z pohledu relačních databází, ale ušetříš si tím mnoho dní práce a ladění.

Kdysi už tu na tohle téma pár diskusí bylo a tohle jsem tam popisoval podrobněji.
Hello world ! Segmentation fault (core dumped)
26.9.2012 09:55 kuka
Rozbalit Rozbalit vše Re: Mysql dotaz
Zda se, ze mas kvalitni kristalovou kouli. Jak tedy bude vypadat tazatelova databaze, kdyz ji navrnes ty pro svuj "jednoduchy inner join"?

26.9.2012 10:56 Kit
Rozbalit Rozbalit vše Re: Mysql dotaz
Každá vlastnost bude mít vlastní sloupec v nějaké tabulce.
26.9.2012 11:25 kuka
Rozbalit Rozbalit vše Re: Mysql dotaz
No tak kdybych se pridrzel toho, co nam tazatel sdelil (users, items), tak items by mohly byt klidne treba fasovane veci. Bude velice prakticke, az nejakemu uzivateli koupi novou lampicku, pridavat sloupec to tabulky nebo lepe do vice tabulek. Proste nikdo netusi, k cemu to ma byt, takze odpoved "navrhni si databazi lepe" je nesmyslna. Navic zmena struktury databaze nebyva vhodnym postupem ve vetsine scenaru, napriklad pokud nekdo dostane za ukol udelat report nad existujicimi daty.
Josef Kufner avatar 26.9.2012 15:38 Josef Kufner | skóre: 66
Rozbalit Rozbalit vše Re: Mysql dotaz
select u.*
from users as u
left join items as i on i.user = u.id
where i.id IN (1, 5)
group by u.id
having count(i.id) = 2
Hello world ! Segmentation fault (core dumped)
26.9.2012 16:16 Kit
Rozbalit Rozbalit vše Re: Mysql dotaz
Hmm. A co když bude mít 2× item1 a ani jednou item5?
26.9.2012 16:47 kuka
Rozbalit Rozbalit vše Re: Mysql dotaz
Bud musi byt vecne zarucena unikatnost nebo

...count(distinct i.id)...
Josef Kufner avatar 26.9.2012 16:50 Josef Kufner | skóre: 66
Rozbalit Rozbalit vše Re: Mysql dotaz
Na sloupci item.id nejspíš bude primární klíč, takže duplicita nehrozí.
Hello world ! Segmentation fault (core dumped)
26.9.2012 16:58 Kit
Rozbalit Rozbalit vše Re: Mysql dotaz
V tom případě se mi víc líbí řešení od Tarmaq.

Tazatel psal, že se počet těch podmínek bude měnit. To znamená, že ten dotaz bude pokaždé vypadat hodně jinak. V původním řešení se jen budou přidávat další řádky.

Kdyby v MySQL bylo možné i scheme-less řešení (např. hstore), tato debata by byla už dávno u konce.
Josef Kufner avatar 26.9.2012 17:08 Josef Kufner | skóre: 66
Rozbalit Rozbalit vše Re: Mysql dotaz
Otázkou je, co bude rychlejší a jak ty dotazy i data nakonec budou vypadat.

Já bych se ale na EAV a podobné zrůdnosti vykašlal. Pokud jde o filtrování podla tagů nebo něčeho takového, tak ten group by je mnohem rychlejší (pokud si to pamatuju dobře; kdysi jsem právě přepisoval hnusný selecty z jednoho tvaru do druhého, jen už nevím, jak to dopadlo).
Hello world ! Segmentation fault (core dumped)
26.9.2012 17:17 Kit
Rozbalit Rozbalit vše Re: Mysql dotaz
EAV je dobře použitelné, pokud je hodně atributů a málo záznamů. Předpokládám, že přesně tohle je případ tazatele. Pokud by tomu bylo jinak, EAV by asi nepoužil.

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.