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íží...
včera 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 3
včera 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
2.12. 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 22
2.12. 15:30 | Zajímavý projekt

Společnost Jolla oznámila v příspěvku Case study: Sailfish Watch na svém blogu, že naportovala Sailfish OS na chytré hodinky. Využila a inspirovala se otevřeným operačním systémem pro chytré hodinky AsteroidOS. Použita je knihovna libhybris. Ukázka ovládání hodinek na YouTube.

Ladislav Hagara | Komentářů: 8
2.12. 14:15 | Nová verze

Byla vydána verze 7.1.0 skriptovacího jazyka PHP používaného zejména k vývoji dynamických webových stránek. Jedná se o první stabilní verzi nejnovější větvě 7.1. Přehled novinek v dokumentaci. Podrobnosti v ChangeLogu. K dispozici je také příručka pro přechod z PHP 7.0.x na PHP 7.1.x.

Ladislav Hagara | Komentářů: 2
2.12. 12:55 | Nová verze

Google Chrome 55 byl prohlášen za stabilní. Nejnovější stabilní verze 55.0.2883.75 tohoto webového prohlížeče přináší řadu oprav a vylepšení (YouTube). Opraveno bylo také 36 bezpečnostních chyb. Mariusz Mlynski si například vydělal 22 500 dolarů za 3 nahlášené chyby (Universal XSS in Blink).

Ladislav Hagara | Komentářů: 4
2.12. 11:55 | Pozvánky

Máte rádi svobodný software a hardware nebo se o nich chcete něco dozvědět? Přijďte na 135. sraz spolku OpenAlt, který se bude konat ve čtvrtek 8. prosince od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Sraz bude tentokrát tématický. Bude retro! K vidění budou přístroje jako Psion 5mx nebo Palm Z22. Ze svobodného hardwaru pak Openmoko nebo čtečka WikiReader. Přijďte se i vy pochlubit svými legendami, nebo alespoň na pivo. Moderní hardware má vstup samozřejmě také povolen.

xkucf03 | Komentářů: 0
2.12. 00:10 | Nová verze

Byla vydána verze 3.2 svobodného systému pro detekci a prevenci průniků a monitorování bezpečnosti počítačových sítí Suricata. Z novinek lze zmínit například podporu protokolů DNP3 a CIP/ENIP, vylepšenou podporu TLS a samozřejmě také aktualizovanou dokumentaci.

Ladislav Hagara | Komentářů: 0
1.12. 21:00 | Nová verze

Byla vydána beta verze Linux Mintu 18.1 s kódovým jménem Serena. Na blogu Linux Mintu jsou hned dvě oznámení. První o vydání Linux Mintu s prostředím MATE a druhé o vydání Linux Mintu s prostředím Cinnamon. Stejným způsobem jsou rozděleny také poznámky k vydání (MATE, Cinnamon) a přehled novinek s náhledy (MATE, Cinnamon). Linux Mint 18.1 bude podporován až do roku 2021.

Ladislav Hagara | Komentářů: 0
1.12. 16:42 | Nová verze

Byl vydán Devuan Jessie 1.0 Beta 2. Jedná se o druhou beta verzi forku Debianu bez systemd představeného v listopadu 2014 (zprávička). První beta verze byla vydána v dubnu letošního roku (zprávička). Jedna z posledních přednášek věnovaných Devuanu proběhla v listopadu na konferenci FSCONS 2016 (YouTube, pdf).

Ladislav Hagara | Komentářů: 0
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 768 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama
Š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: 445×

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: 32
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: 32
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: 32
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: 48
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: 48
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: 71 | 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.