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 13:55 | Komunita

    Byl publikován aktuální přehled vývoje renderovacího jádra webového prohlížeče Servo (Wikipedie). Servo mimo jiné nově zvládne animované obrázky APNG a WebP.

    Ladislav Hagara | Komentářů: 0
    dnes 13:11 | IT novinky

    Na chytré telefony a počítačové tablety v Rusku bude od začátku příštího měsíce povinné předinstalovávat státem podporovanou komunikační aplikaci MAX, která konkuruje aplikaci WhatsApp americké společnosti Meta Platforms. Oznámila to dnes ruská vláda. Ta by podle kritiků mohla aplikaci MAX používat ke sledování uživatelů. Ruská státní média obvinění ze špehování pomocí aplikace MAX popírají. Tvrdí, že MAX má méně oprávnění k přístupu k údajům o uživatelích než konkurenční aplikace WhatsApp a Telegram.

    Ladislav Hagara | Komentářů: 9
    dnes 04:22 | IT novinky

    Společnost PINE64 stojící za telefony PinePhone nebo notebooky Pinebook publikovala na svém blogu srpnový souhrn novinek. Kvůli nedostatečnému zájmu byla ukončena výroba telefonů PinePhone Pro.

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

    Po pěti měsících vývoje byla vydána nová verze 0.15.1 programovacího jazyka Zig (GitHub, Wikipedie). Verze 0.15.0 byla přeskočena. Přispělo 162 vývojářů. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 21:55 | Komunita

    Před sedmi lety společnost Valve představila fork projektu Wine s názvem Proton umožňující v Linuxu přímo ze Steamu hrát počítačové hry do té doby běžící pouze ve Windows. Aktuální přehled podporovaných her na stránkách ProtonDB

    Ladislav Hagara | Komentářů: 0
    včera 14:55 | IT novinky

    Společnost DuckDuckGo rozšířila svůj AI chat Duck.ai o GPT-5 mini (𝕏). Duck.ai umožňuje anonymní přístup bez vytváření účtů k několika modelům umělé inteligence. Aktuálně k GPT-4o mini, GPT-5 mini, Llama 4 Scout, Claude Haiku 3.5 a Mistral Small 3.

    Ladislav Hagara | Komentářů: 5
    včera 12:44 | Bezpečnostní upozornění

    Marek Tóth v příspěvku DOM-based Extension Clickjacking: Data ve správcích hesel v ohrožení na svém blogu popsal novou clickjacking techniku s několika variantami útoků a otestoval ji proti 11 správcům hesel. Výsledkem bylo nalezení několika 0-day zranitelností, které mohly ovlivnit uložená data desítek milionů uživatelů. Jedno kliknutí kdekoliv na webové stránce kontrolované útočníkem umožňovalo ukrást uživatelská data ze

    … více »
    Ladislav Hagara | Komentářů: 1
    20.8. 21:11 | IT novinky

    Na dnešní akci Made by Google 2025 (YouTube) byly představeny telefony Pixel 10 s novým čipem Google Tensor G5 a novými AI funkcemi, hodinky Pixel Watch 4 a sluchátka Pixel Buds 2a.

    Ladislav Hagara | Komentářů: 25
    20.8. 14:11 | Nová verze

    The Document Foundation oznámila vydání nové major verze 25.8 svobodného kancelářského balíku LibreOffice. Podrobný přehled nových vlastností i s náhledy v poznámkách k vydání (cs) a také na Youtube a PeerTube.

    Ladislav Hagara | Komentářů: 17
    20.8. 04:00 | Nová verze

    Zeek (Wikipedie), původně Bro, byl vydán v nové major verzi 8.0.0. Jedná se o open source platformu pro analýzu síťového provozu. Vyzkoušet lze online.

    Ladislav Hagara | Komentářů: 0
    Pro otevření více webových stránek ve webovém prohlížečí používám
     (75%)
     (9%)
     (5%)
     (5%)
     (7%)
     (0%)
    Celkem 44 hlasů
     Komentářů: 6, poslední včera 13:35
    Rozcestník
    Štítky: není přiřazen žádný štítek

    Dotaz: SELECT tak aby pozadovane ID bolo v strede

    23.6.2009 08:53 Jano33
    SELECT tak aby pozadovane ID bolo v strede
    Přečteno: 477×

    Zdravim,

    potrebujem spravit taky selekct aby moje pozadovane ID bolo v strede. Priklad.

    [id-2, id-1, id0, id1, id2]

     

    kde ID0 je moje pozadovane. Da sa spravit taky selekt aby jednoducho zobral napr. 3 predchadzajuce 3 nasledujuce zaznamy?

     

    Vdaka 

    Odpovědi

    23.6.2009 09:17 Messa | skóre: 39 | blog: Messa
    Rozbalit Rozbalit vše Re: SELECT tak aby pozadovane ID bolo v strede
    SELECT ... WHERE id BETWEEN X - 3 AND X + 3 ORDER BY id?
    msk avatar 23.6.2009 09:19 msk | skóre: 27 | blog: msk
    Rozbalit Rozbalit vše Re: SELECT tak aby pozadovane ID bolo v strede
    ID je integer primary key? Ak ano, tak napr:

    chcem id = 5

    SELECT ... FROM ... WHERE ID >= 3 AND ID <= 7;
    msk avatar 23.6.2009 09:20 msk | skóre: 27 | blog: msk
    Rozbalit Rozbalit vše Re: SELECT tak aby pozadovane ID bolo v strede
    ... co je len nastrel. Messa to napisal spravne.
    23.6.2009 09:27 Jano33
    Rozbalit Rozbalit vše Re: SELECT tak aby pozadovane ID bolo v strede

     no to je sice pekne, ale problem je ze tie ID nemusia ist za sebou. Co ak je tam [ 1, 5, 8, 10, 15, 50]. LIMITOM dakazem vytiahnut napr 3 zaznamy od 10 nahod, ale co tie nalavo?

    23.6.2009 09:48 marek
    Rozbalit Rozbalit vše Re: SELECT tak aby pozadovane ID bolo v strede

    Dobry den.

    Potom muzete ten limit  pouzit dvakrat + union.

    Marek

    23.6.2009 11:31 Messa | skóre: 39 | blog: Messa
    Rozbalit Rozbalit vše Re: SELECT tak aby pozadovane ID bolo v strede
    Přesně tak.

    Bohužel MySQL (což tipuji asi bude to, co používáte) neumí LIMIT v poddotazech, takže by nešlo udělat něco jako WHERE id IN (SELECT id FROM tabulka WHERE id <= X LIMIT 3) OR id IN (SELECT id FROM tabulka WHERE id >= X LIMIT 3), což by bylo o něco hezčí.
    23.6.2009 11:34 razor | skóre: 33
    Rozbalit Rozbalit vše Re: SELECT tak aby pozadovane ID bolo v strede

    Moje MySQL limit v poddotazu umí.

    23.6.2009 12:23 Messa | skóre: 39 | blog: Messa
    Rozbalit Rozbalit vše Re: SELECT tak aby pozadovane ID bolo v strede
    Jakou máš verzi? V 5.0.81 jaksi neběhají.
    23.6.2009 12:32 razor | skóre: 33
    Rozbalit Rozbalit vše Re: SELECT tak aby pozadovane ID bolo v strede

    5.0.70. Jinak v dokumentaci píšou že limit se v subquery může normálně používat. 

    23.6.2009 13:03 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: SELECT tak aby pozadovane ID bolo v strede

    Malý omyl :) ano MySql 5 umí použít LIMIT clausuli v poddotazech, ale již ne ve spojením s IN :( - aspoň doufám, že se to nezměnilo :).

    Lze:

    SELECT * FROM t1
      JOIN (SELECT id FROM t2 ORDER BY id LIMIT 0, 1000) AS t3
        ON (t1.id = t3.id)
    

    Ale NELZE:

    SELECT * FROM t1 WHERE t1.id IN (SELECT id FROM t2 ORDER BY id LIMIT 0, 1000)
    

     

    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    23.6.2009 13:13 razor | skóre: 33
    Rozbalit Rozbalit vše Re: SELECT tak aby pozadovane ID bolo v strede

    Je to tak. Dík za info.

    23.6.2009 16:20 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: SELECT tak aby pozadovane ID bolo v strede

    Ale lze udělat kličku takto:

    SELECT * FROM t1 WHERE t1.id IN (SELECT * FROM (SELECT id FROM t1 ORDER BY id LIMIT 0, 5) AS t2)
    

    To bude fungovat prostě select s clausulí LIMIT se zapouzdří do selectu bez limitu,
    ale pozor na výkonost při velkých tabulkách a hlavně velké hodnotě v LIMIT.

     

    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    23.6.2009 10:31 saslik
    Rozbalit Rozbalit vše Re: SELECT tak aby pozadovane ID bolo v strede

    V Oracle (mozna i jinde) by slo pouzit analyticke funkce LAG a LEAD, ale snadno by to slo pouzit asi jen pro predem znamy rozsah okoli, napr. ty tri zaznamy na kazde strane. Obecne jak uz nekdo navrhoval unionem by to melo byt v pohode pro vetsinu tabulek, pro hodne velke bych to asi resil proceduralne (napr. PLSQL) na platformach kde je takova moznost. Primocare reseni pro predem znamy rozsah by slo pomoci not exists (prvni predchazejici je mensi nez master a neexistuje zadny mezi nimi atd.), coz muze na male tabulce rovnez fungovat, pokud tam bude vhodny index.

    23.6.2009 12:27 Jano33
    Rozbalit Rozbalit vše Re: SELECT tak aby pozadovane ID bolo v strede

     je to MySQL

    23.6.2009 12:44 Jano33
    Rozbalit Rozbalit vše Re: SELECT tak aby pozadovane ID bolo v strede

    Takze spravim to zatial cez dva selekty:

    SELECT * FROM tabulka WHERE id < X order by id desc LIMIT 3

    SELECT * FROM tabulka WHERE id >= X LIMIT 4

    A v PHP to spojim. Bohuzial moja verzia MySQL nepodporuje LIMIT v subquery.

    Vdaka za pomoc.

     

    Jano

     

    23.6.2009 13:14 cronin | skóre: 49
    Rozbalit Rozbalit vše Re: SELECT tak aby pozadovane ID bolo v strede
    Problem nastane, ked sa tabulka zmeni medzi tymi dvomi selectami.
    23.6.2009 13:23 Messa | skóre: 39 | blog: Messa
    Rozbalit Rozbalit vše Re: SELECT tak aby pozadovane ID bolo v strede
    A proto používáme InnoDB tabulky, transakce a isolation level READ_COMMITED, jako v každé jiné opravdové databázi :-)
    23.6.2009 13:53 cronin | skóre: 49
    Rozbalit Rozbalit vše Re: SELECT tak aby pozadovane ID bolo v strede
    Ja som len chcel upozornit, aby sa na transakcnost nahodou nezabudlo. ;-)
    24.6.2009 15:25 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: SELECT tak aby pozadovane ID bolo v strede
    Read commited už podle jména není isolation level, která by vám zajistila, že každý select nebude číst z jiné verze tabulky.
    23.6.2009 16:13 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: SELECT tak aby pozadovane ID bolo v strede

    Zkus radši toto i bez transakce: 15tka je hledane ID Je to takové transparentní a pokud se nejedná o součást nějakého velkého dotazu je to i rychlé (závorky jsou důležité!).
    1. dotaz vezme před 3ks
    2. dotaz vezme pozadovane ID
    3. dotaze vezme po 3ks

    (SELECT id FROM t1 WHERE id > 15 LIMIT 0, 3) 
      UNION 
    (SELECT id FROM t1 WHERE id = 15 LIMIT 0, 1) 
      UNION 
    (SELECT id FROM t1 WHERE id < 15 LIMIT 0, 3)
        ORDER BY id
    

    Neřeší to neexistenci 3 před a 3 po záznamů - nebylo to v dotazu specifikováno.
    dosáhnou výsledku lze více způsoby, jen je třeba se vyhnou 'IN' v MySql.

     Příklad přes PHP je třeba uzavřít do transakce. což není problém pokud se jedná o InnoDB tabulky, na MyIsam bohužel toto není možné.
    Ale pokud se jedná například o web kde jeden zapisuje a mnoho lidí čte a není zklamání dotazu kritické, tak není problém i s takto optimistickým přístupem :).
    Nicméně výkonostně je UNION výrazně rychlejší — jen 1x se komunikuje s MySql serverem.

    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    23.6.2009 18:57 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: SELECT tak aby pozadovane ID bolo v strede

    Malá oprava
    ... doplněno řazení a přehozeni prvního a posledniho selectu aby to odpovídalo popisu výše:

    (SELECT id FROM t1 WHERE id < 15 ORDER BY id DESC LIMIT 0, 3)
      UNION 
    (SELECT id FROM t1 WHERE id = 15 LIMIT 0, 1) 
      UNION 
    (SELECT id FROM t1 WHERE id > 15 ORDER BY id ASC LIMIT 0, 3) 
        ORDER BY id
    

     

    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    24.6.2009 11:53 Jano33
    Rozbalit Rozbalit vše Re: SELECT tak aby pozadovane ID bolo v strede

     vdaka za rady :)

    Bilbo avatar 24.6.2009 16:49 Bilbo | skóre: 29
    Rozbalit Rozbalit vše Re: SELECT tak aby pozadovane ID bolo v strede
    (SELECT id FROM t1 WHERE id <= 15 ORDER BY id DESC LIMIT 0, 4)
      UNION 
    (SELECT id FROM t1 WHERE id > 15 ORDER BY id ASC LIMIT 0, 3) 
        ORDER BY id
    Misto < tam jde dat <= a zredukovat to tak ze 3 poddotazu na 2. Pokud vim, ze ID existuje, tak bude vysledek stejny, jako u dotazu ze 3 casti. Pokud by ID neexistovalo, dostal bych 4 pred a 3 po.
    Big brother is not watching you anymore. Big Brother is telling you how to live...

    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.