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í
×
    dnes 11:55 | Upozornění

    V neděli 11. října proběhne rotace klíče kořenové zóny. Podruhé v historii. Ondřej Filip na blogu CZ.NIC: "Pokud je pro Vás DNS protokol spíše výzva, ale přesto spravujete nějakou síť či DNS resolver, zkuste si jednoduchý test, který připravila firma Cloudflare na této adrese. Obzvláště zbystřit byste měli, pokud uvidíte nějaká červená políčka."

    Ladislav Hagara | Komentářů: 3
    dnes 09:55 | IT novinky

    Vláda Spojených států se rozhodla vyřadit americkou softwarovou společnost Microsoft a několik dalších velkých technologických podniků z programu, který umožňuje kvalifikovaným zahraničním pracovníkům získat povolení k trvalému pobytu. Oznámila to včera administrativa amerického prezidenta Donalda Trumpa. Opatření zdůvodnila rozsáhlým zneužíváním programu, který je dlouhodobě terčem kritiky ze strany Trumpových příznivců, neboť prý znevýhodňuje americké pracovníky.

    Ladislav Hagara | Komentářů: 11
    dnes 09:44 | IT novinky

    Datové centrum největší ruské technologické společnosti Jandex v Rjazaňské oblasti se stalo cílem dronového útoku a zastavilo provoz. Jandexu se někdy přezdívá „ruský Google“. Provozuje nejoblíbenější internetový vyhledávač v Rusku nebo aplikace pro objednávky jídla a taxi. Využívají jej desítky milionů lidí v rusky mluvících zemích.

    Ladislav Hagara | Komentářů: 8
    dnes 09:33 | Nová verze

    Francouzská společnost Mistral AI představila Mistral Large 4 (interně přezdívaný 'le Chonk', volně přeloženo 'pořádný macek'), 'open-weight multimodální hybridní instruct-and-reasoning model s architekturou granulárního MoE, nativně podporující více jak 160 jazyků'. Model má přes jeden bilión parametrů, z nichž při práci využívá 49 miliard, kontextové okno o délce milion tokenů a obrazový enkodér o 1,6 miliardách parametrů.

    … více »
    ❗Červivý Hřib krade❗ | Komentářů: 0
    dnes 03:22 | Nová verze

    Svobodný multiplatformní herní engine Bevy napsaný v Rustu byl vydán ve verzi 0.20. Díky 227 přispěvatelům.

    Ladislav Hagara | Komentářů: 1
    dnes 03:11 | Komunita

    Simon Long oznámil Raspberry Pi Desktop pro PC a Mac s Intelem postavený na aktualizovaném Debianu 13 Trixie. S klientem Raspberry Pi Connect pro vzdálenou správu. Ke stažení je vedle Raspberry Pi OS pro Raspberry Pi.

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

    ESP32-C3 adblock přemění lacinou vývojovou desku ESP32‑C3 na samostatný DNS blokovač nejenom reklamních domén, minimalistickou alternativu k populárnímu Pi-hole. ESP32-C3 adblock místo objemných názvů domén ukládá jejich 40-bitové FNV-1a hashe do flash paměti, které pak binárně prohledává, kontrola jedné domény trvá přibližně 10 milisekund. Blocklist pojme až 537 tisíc domén a lze jej spravovat přes webové rozhraní. Projekt zatím

    … více »
    ❗Červivý Hřib krade❗ | Komentářů: 0
    včera 21:00 | Zajímavý software

    ArtCraft je sada open source aplikací pro práci s obrázky a videi "inspirovaných" aplikacemi od Adobe. Napsaných v Rustu. Pro MacOS, Windows i Linux. Běží také ve webovém prohlížeči. Aktuálně se jedná o 7 aplikací: PhotoCraft (Photoshop), VectorCraft (Illustrator), FilmCraft (Premiere Pro), LightCraft (Lightroom), PdfCraft (Acrobat), EffectCraft (After Effects) a DesignCraft (InDesign). Zdrojové kódy jsou k dispozici na GitHubu.

    Ladislav Hagara | Komentářů: 8
    včera 16:33 | Zajímavý software

    Strands Decider 2B je malý open-source model s 2 miliardami parametrů, určený k rychlé klasifikaci vstupů a rozhodování mezi možnostmi, generující odpovědi ve stylu modelu Jev. Strands dosáhl přibližně 72% shody s Jevem na veřejné testovací sadě JevBench (tento benchmark pochopitleně nepředstavuje přímé srovnání s modelem Jev). Zdrojové kódy jsou k dispozici na GitHubu pod licencí Apache-2.0, váhy modelu na Hugging Face.

    ❗Červivý Hřib krade❗ | Komentářů: 4
    včera 16:22 | Upozornění

    Ve věku 90 let zemřela americká softwarová inženýrka Margaret Hamiltonová, která vedla tým, jenž vyvíjel letový software pro program Apollo amerického Národního úřadu pro letectví a vesmír (NASA).

    Ladislav Hagara | Komentářů: 9
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (29%)
     (8%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2818 hlasů
     Komentářů: 31, poslední 13.8. 00:27
    Rozcestník

    Dotaz: mysql join iba vtedy ak je hodnota jednej row ina ako 0

    6.2.2013 16:17 adrinko | skóre: 22
    mysql join iba vtedy ak je hodnota jednej row ina ako 0
    Přečteno: 843×
    ahojte, mam takyto mysql prikaz
        		SELECT o.user_id, o.date, i.*, k.adresa
        		FROM objednavky_items i
        		JOIN objednavky o ON (i.objednavka_id = o.id)
        		JOIN kontrolovanie k ON (i.item_id = k.id)
        		WHERE o.id = '$order_id' AND o.hash = '$order_hash' AND o.dokoncena = 'A'
    Problem je, ze by som chcel, aby sa JOIN kontrolovanie k ON (i.item_id = k.id) vykonalo a k.adresa naplnila len vtedy, ak i.item_id!=0

    Ako na to? Vdaka!

    Odpovědi

    6.2.2013 16:27 adrinko | skóre: 22
    Rozbalit Rozbalit vše Re: mysql join iba vtedy ak je hodnota jednej row ina ako 0
    zmodifikoval som to takto a zda sa, ze to vracia dobre vysledky
    SELECT o.user_id, o.date, i.*, k.adresa
    FROM objednavky_items i
    INNER JOIN objednavky o ON (i.objednavka_id = o.id)
    LEFT JOIN kontrolovanie k ON (i.item_id = k.id)
    WHERE o.id = '$order_id' AND o.hash = '$order_hash' AND o.dokoncena = 'A'
    je to ale spravne riesenie mojho problemu?
    6.2.2013 21:19 kuka
    Rozbalit Rozbalit vše Re: mysql join iba vtedy ak je hodnota jednej row ina ako 0
    Ne neni, nikde nevidim zadnou podminku na != 0. Ovsem nevylucuju, zes nespravne popsal svuj problem a pak by to treba spravne mohlo byt.
    7.2.2013 12:29 logik
    Rozbalit Rozbalit vše Re: mysql join iba vtedy ak je hodnota jednej row ina ako 0
    adrinko: No protože to left join se chová podobně: on evidentně nemá pro předmět 0 záznam v tabulce kontrolovanie nemá.

    kuko: Pokud pro předmět není odpovídající záznam, měl bys tam použít nikoli 0, ale NULL. Znemožňuješ tak např. použití cizích klíčů, který bys měl definovat, abys zaručil konzistenci databáze.
    7.2.2013 13:11 kuka
    Rozbalit Rozbalit vše Re: mysql join iba vtedy ak je hodnota jednej row ina ako 0
    Ja naprosto netusim, kde existuje nebo neexistuje zaznam a co ma nebo nema byt null. Jedine, co rikam, je, ze left join neni ekvivalentni s podminkou dotazeni adresy jen pro id!=0. Napriklad trivialne pokud kontrolovanie pro id=0 bude existovat, tak se adresa dotahne (nevim z ceho je "evidentni", ze takovy zaznam v tabulce nebude). Podobne ovsem bude adresa prazdna pro id=17, pokud nebude v tabulce kontrolovanie odpovidajici zaznam. Mozna ze chce tazatel ve skutecnosti prirozene vypadajici chovani "tam kde kontrolovanie existuje, pouzij z nej adresu", ale pak neni jasne, proc se na to nezepta rovnou.
    7.2.2013 14:40 logik
    Rozbalit Rozbalit vše Re: mysql join iba vtedy ak je hodnota jednej row ina ako 0
    Bez urážky, když chceš lidem radit, tak holt musíš číst i mezi řádkama....

    Málokdo umí položit otázku zcela přesně: ono to už proto, že položit správnou otázku je většinou to nejsložitější na nalezení odpovědi.
    7.2.2013 15:01 j
    Rozbalit Rozbalit vše Re: mysql join iba vtedy ak je hodnota jednej row ina ako 0
    Predevsim je treba psat dotazy, ktere delaji to co maji, a ne ze prave ted a za techto okolnosti pvraceji spravny vysledek. Left join dela uplne neco jinyho.

    zjednodusene: join ... predpoklada se vazba 1:1, pri neexistenci zaznamu v jedne z obou tabulek nevrati nic left (pripadne right) join ... prepodklada se obecna vazna 1:N (N:1), v pripade neexistence zaznamu v navazovane tabulce obecne vraci null v jejich sloupcich

    Nikde tam nevidim nic o tom, ze by nejakej sloupec mel nebo nemel mit nejakou hodnotu. Pokud tam dava left join a vraci mu to spravny vysledky, tak trebas jen proto, ze aktualne existuje pratave vazba 1:1, jenze kdyz existovat (at uz umyslne nebo chybou) prestane, tak to vrati kraviny.
    7.2.2013 16:21 logik
    Rozbalit Rozbalit vše Re: mysql join iba vtedy ak je hodnota jednej row ina ako 0
    Nelze než zopakovat radu: naučte se číst mezi řádky. Proč asi autor chtěl tam dát výsledky jen pro id<>0? Hádej. Že by proto, že 0 používá pro identifikaci: zde není předmět?? A proto ve skutečnosti jeho dotaz zněl: jak zařídím, aby ve výpisu byly i ty řádky, který nemaj odpovídající řádek v tý druhý tabulce, protože INNER JOIN mi je vyhodí? To s prominutím napadne i průměrně vyspělou opici, pokud má ta opice opravdu snahu tazateli pomoci a ne si honit ego, že tazatel je blbec a neumí SQL.

    Kardinalita pak s tím nemá vůbec co dělat, teda ne tím způsobem kterým píšeš: vazbí se na PK, takže je jasný, že je to vazba (0,N):(0,1), a problémy mu působí právě to, že to není vazba N1, ale N:(0,1). Navíc i kdyby to PK nebyl a byla to vazba M:N, tak z dotazu nijak nevyplývá, že by to bylo špatně. Chtít vypsat všechny kontroly výrobků a navíc nekontrolované výrobky dává dobrý smysl.

    To, co má v návrhu blbě a na co byste ho měli upozornit není to, že tam má left join, ten je naprosto v pořádku, ale to, že používá pro indikaci neexistence záznamu v druhé tabulce. To je jádro problému.
    7.2.2013 16:43 logik
    Rozbalit Rozbalit vše Re: mysql join iba vtedy ak je hodnota jednej row ina ako 0
    Jinak ještě: Join rozhodně NEPŘEDPOKLÁDÁ vazbu 1:1, stejně ani tak Left Join NEPŘEDPOKLÁDÁ vazbu 1:N, všechny JOINY jdou použít na jakoukoli kardinalitu.

    Protipříklad je jednoduchý: jak inner, tak outer join má smysl např. u tabulky zachycující příbuzenství. Přesto je příbuzenství obecně vazba (0,N):(0,M) a tedy nesplňuje žádný z Tvých předpisů (na obou stranách má nulu).

    INNER JOIN a (LEFT|RIGHT) OUTER JOIN se naprosto neliší tím, na jaké kardinality se aplikují, ale tím, jaké výsledky vracejí: zatímco INNER join vrací pouze subjekty s existující vazbou, OUTER join vrací seznam subjektů (nezávisle na tom, zdali mají vazbu) + informace o potenciálních vazbách.
    7.2.2013 15:37 kuka
    Rozbalit Rozbalit vše Re: mysql join iba vtedy ak je hodnota jednej row ina ako 0
    Ja prave neradim, ale pouze odpovidam na otazku. Kdybych chtel radit, tak rada by byla "nauc se SQL a nebudes muset hadat, co dela tvuj triradkovy dotaz".
    7.2.2013 16:28 logik
    Rozbalit Rozbalit vše Re: mysql join iba vtedy ak je hodnota jednej row ina ako 0
    V tom případě jdi prosím odpovídat na otázky někam jinam. Pokud jsi si nevšiml, tady není odpovídárná, tady je PORADNA a tedy zde není cílem tazateli ODPOVĚDĚT a libovat si nad tím, jak jsem chytřejší než on, ale PORADIT mu tak, aby jeho řešení problému bylo správné.

    Vzhledem k tomu, že jak píšeš, tak kdybys chtěl radit, tak budeš na tazatele taktéž sprostý a přitom Tvoje rada mu nijak nepomůže, tak jen prosím, nechoď se radši ani radit. Tedy alespoň do té doby, než se naučíš alespoň základům mezilidské slušnosti, empatie a tolerance a dokážeš přjmout to, že existují také lidé, co se teprv programovat učí.
    7.2.2013 17:37 kuka
    Rozbalit Rozbalit vše Re: mysql join iba vtedy ak je hodnota jednej row ina ako 0
    Aha takze v poradne se neodpovida na dotazy? To se dela v odpovidarne? Dekuji za toto rozsireni obzoru, ale ponecham si svuj nazor na vec. Nevim, co by melo byt "sprosteho" na tom, kdybych nekomu poradil, ze se ma neco naucit - zjistit napr. na googlu co dela left join trva asi tak stejne dlouho jako napsat dotaz zde do poradny. Nemyslim si, ze je smysluplnejsi a pro tazatele prinosnejsi, kdyz mu papouskujes svoji vlastni "definici" left joinu. Pokud jde o zakladni slusnost, nikoho odtud napriklad na rozdil od tebe nevyhazuju a nespekuluju bezduvodne o jeho charakteru, takze si prosim nalej vlastni medicinu a uz mi nic dalsiho nepis. Diky.
    8.2.2013 17:02 logik
    Rozbalit Rozbalit vše Re: mysql join iba vtedy ak je hodnota jednej row ina ako 0
    Ano, v poradně není primárním cílem zodpovědět dotaz, ale pomoci: a to znamená někdy i opravdu dotaz nezodpovědět. Nebo to chceš tvrdit, že pokud by někdo zavolal do psychiatrické poradny, jak se nabíjí pistole, tak je správné dotaz zodpovědět? Zde je situace stejná: tazatel ve skutečnosti měl jiný problém a zodpovězení otázky by mu nejen nepomohlo, ale i by ho pravděpodobně víc zmátlo a přidělalo mu práci.

    Najit na googlu co dělá left join je opravdu záležitost minuty. Ale on se NEPTAL, co dělá leftjoin. Chci todle, jak to udělám? To samostudiem googlu je práce na desítky minut a naprosto vhodné téma na otázku do poradny. A dokonce když našel správné řešení, tak ho dal do diskuse pro ostatní. Takže Tvůj argument i Tvoje kritika tazatele je jaksi dosti mimo.

    Ohledně údajné mojí definice LEFT JOINU, co z toho co jsem o něm psal konkrétně není pravda (navíc to byla jen korekce j., který opravdu o leftjoinu psal blbiny).

    A ohledně slušnosti: psal jsi, že pokud by jsi chtěl radit, tak bys mu poradil, ať se jde naučit SQL, a to poměrně dosti dehonestujícím způsobem. Pokud se Ti to zdá slušné, tak Ok, je to Tvůj názor, ale můj názor je prostě takový, že to je neomalenost. Stejnětak je IMHO dosti arogantní Tvůj postoj, že se nebudeš snažit pochopit, jak tazatel otázku myslel popř. co je jeho skutečný problém a prostě mu odpovíš, ať už mu tvoje odpověď pomůže, nebo uškodí.

    8.2.2013 09:25 j
    Rozbalit Rozbalit vše Re: mysql join iba vtedy ak je hodnota jednej row ina ako 0
    Nekam jinam (trebas doprdele) bys mel jit predevsim ty, protoze radis kraviny. Jestli totiz nekomu neco nepomuze, tak tvoje vesteni z kristalovy koule.

    Pokud se nekdo na neco zepta, tak odpovdam na to, na co se ptal a nevymejslim kraviny s tim, ze by to mohlo byt nejak, protoze tak bych to udelal ja.
    8.2.2013 17:08 logik
    Rozbalit Rozbalit vše Re: mysql join iba vtedy ak je hodnota jednej row ina ako 0
    Co jsem poradil za kravinu? Konkrétně?

    Jinak jak je vidět z reakce tazatele (napsal řešení a už se neozval, tj. řešení mu vyhovuje), tak moje "věštění" funguje. Že by to bylo tím, že to není až tak věštění, ale praxe v programování a pedagogice programování? Auto také lidem, co neznali jeho princip přišlo jako "magické čertovo vozítko"....

    8.2.2013 23:10 adrinko | skóre: 22
    Rozbalit Rozbalit vše Re: mysql join iba vtedy ak je hodnota jednej row ina ako 0
    Zdravím vás priatelia, sorry, bol som mimo pc doteraz. Vidím, že sa tu rozprúdila vcelku slušná debata. Ale naspäť k problému. Ten left join som našiel a zatiaľ mi dáva správne výsledky, ale nebude to to najlepšie riešenie, keďže tam nie je tá podmienka i.item_id!=0. Totižto, ak je i.item_id !=0, tak mi to pri joine dá do "adresa" správnu vec. Pri záznamoch, kde je i.item_id=0 nie sú v tej ľavej tabuľke left joinu záznamy, takže mi to v tom pôvodnej mysql dotaze (otvárajúca otázka tohto postu) preskočilo tento záznam (čo je pre moje potreby zle, lebo potrebujem aj tie záznamy vo výsledku). Ja by som však potreboval, aby to vracalo aj záznamy s i.item_id=0, avšak v tom prípade by mala byť "adresa" naplnená prázdnou hodnotou, t.j. adresa vo výsledkoch=''. Preto mi to zatiaľ funguje s tým left joinom, ktorý vráti i tie výsledky, kde i.item_id=0, čo je pre mňa dobre a zároveň nechá návratovú hodnotu "adresa" prázdnu. Poprosil by som však vás - skúsenejších o poradenie, aby to bol správne napísaný príkaz, t.j. aby sa v ňom dalo orientovať. Ďakujem!
    9.2.2013 14:10 Logik
    Rozbalit Rozbalit vše Re: mysql join iba vtedy ak je hodnota jednej row ina ako 0
    Jo, je to správně napsanej příkaz.

    To, co tam máš nestandardně a v podstatě se dá říci blbě je to, že nepsaným standardem je, že když někde neexistuje vazba (tzn. není tam předmět), tak se to indikuje nikoli nulou, ale hodnotou NULL. A to proto, že pak např. můžeš na item_id zadefinovat tzn. cizí klíč (foreign key) neboli referenční integritu. To bych doporučoval přepsat, ale to nemá žádnej vliv na dotaz.

    Další věc, která je tam "podezřelá" je, že se na tabulku kontrolovanie se odkazuješ pomocí sloupečku item_id. Zpravidla se na tabulku odkazuje sloupcem s jménem tabulky. Takhle to vypadá, že ten sloupeček item_id odkazuje na nějakej předmět a nikoli na kontrolu toho předmětu. Pravděpodobně máš pro každej předmět max jednu kontrolu a tak máš tabulku kontrola a předmět "sloučenou" a je to teda fakticky dobře, ale doporučoval bych změnit název sloupce item_id tak, aby odpovídal tomu, na co ukazuje, tj. kontrolovanie_id.
    9.2.2013 19:31 adrinko | skóre: 22
    Rozbalit Rozbalit vše Re: mysql join iba vtedy ak je hodnota jednej row ina ako 0
    Logik, ďakujem Ti veľmi pekne za vysvetlenie. Budem na to v budúcnosti myslieť. Ešte raz vďaka!
    7.2.2013 08:47 j
    Rozbalit Rozbalit vše Re: mysql join iba vtedy ak je hodnota jednej row ina ako 0
    JOIN kontrolovanie k ON (i.item_id = k.id) and i.item_id <> 0
    

    Založit nové vlákno • Nahoru

    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.