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 22:00 | Komunita

Přibližně před měsícem bylo oznámeno, že linuxová distribuce SUSE Linux Enterprise Server (SLES) běží nově také Raspberry Pi 3 (dokumentace). Obraz verze 12 SP2 pro Raspberry Pi 3 je ke stažení zdarma. Pro registrované jsou po dobu jednoho roku zdarma také aktualizace. Dnes bylo oznámeno, že pro Raspberry Pi 3 je k dispozici také nové openSUSE Leap 42.2 (zprávička). K dispozici je hned několik obrazů.

Ladislav Hagara | Komentářů: 1
včera 06:00 | Zajímavý software

OMG! Ubuntu! představuje emulátor terminálu Hyper (GitHub) postavený na webových technologiích (HTML, CSS a JavaScript). V diskusi k článku je zmíněn podobný emulátor terminálu Black Screen. Hyper i Black Screen používají framework Electron, stejně jako editor Atom nebo vývojové prostředí Visual Studio Code.

Ladislav Hagara | Komentářů: 26
včera 06:00 | Zajímavý článek

I letos vychází řada ajťáckých adventních kalendářů. QEMU Advent Calendar 2016 přináší každý den nový obraz disku pro QEMU. Programátoři se mohou potrápit při řešení úloh z kalendáře Advent of Code 2016. Kalendáře Perl Advent Calendar 2016 a Perl 6 Advent Calendar přinášejí každý den zajímavé informace o programovacím jazyce Perl. Stranou nezůstává ani programovací jazyk Go.

Ladislav Hagara | Komentářů: 7
3.12. 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ářů: 14
3.12. 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ářů: 25
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ářů: 15
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ářů: 5
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ářů: 1
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 774 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: Řazení podle obsahu řádků v mysql

24.4.2011 22:33 eater
Řazení podle obsahu řádků v mysql
Přečteno: 662×
Dobrý den. V mysql mám vytvořenou tabulku se sloupci uzivatel, vlastnost, hodnota. Jak mám seřadit řádky v tabulce podle sloupce hodnota pouze pokud je vlastnost vlastnost1? Je to takové podmíněné řazení, ale nenašel jsem, že by order by uměl where.

Řešení dotazu:


Odpovědi

poky74 avatar 24.4.2011 22:41 poky74 | skóre: 36 | blog: Zápisník | Vrchlabí
Rozbalit Rozbalit vše Re: Řazení podle obsahu řádků v mysql

select * from tabulka where vlastnost="vlastnost1" order by hodnota desc

Pokud jsem to ovšem správně pochopil, tento dotaz z tabulky vybere řádky, které mají ve sloupci vlastnost hodnotu vlastnost1 a seřadí je sestupně podle sloupce hodnota...

Chcete Linuxové samolepky nebo Tuxe na klíče? ->
24.4.2011 22:57 eater
Rozbalit Rozbalit vše Re: Řazení podle obsahu řádků v mysql
Já chci vybrat všechny řádky v tabulce s tím, že ty které mají vlastnost1 se budou opravdu fyzicky řadit. Ve výsledku mi jde o to mít nějak seřazené uživatele, klidně i podle více vlastností.
poky74 avatar 24.4.2011 23:05 poky74 | skóre: 36 | blog: Zápisník | Vrchlabí
Rozbalit Rozbalit vše Re: Řazení podle obsahu řádků v mysql

Nevím sice z jakého důvodu to chcete dělat takto, ale pokud je opravdu nutné vybrat všechna data a řadit jen některá, tak bych všechna data ukládal do pole a řazení řešil na úrovni aplikace.

Ale abych navrhl nějaké konkrétní řešení, musel bych znát větší detaily, takhle vám toho moc neporadím.

Chcete Linuxové samolepky nebo Tuxe na klíče? ->
24.4.2011 23:44 eater
Rozbalit Rozbalit vše Re: Řazení podle obsahu řádků v mysql
Je to taková snaha o částečnou synchronizaci ldap s mysql a proto že v ldap může být pro uživatelský záznam více různých (i vícenásobných) atributů tak to nemohu "převést na sloupce". Ta data nebudu vybírat všechna, bude tam nějaký limit při vybírání, ale to řazení bych potřeboval už v databázi.
Petr Bravenec avatar 25.4.2011 09:01 Petr Bravenec | skóre: 43 | blog: Bravenec
Rozbalit Rozbalit vše Re: Řazení podle obsahu řádků v mysql
Mysql se snažím úspěšně vyhýbat, ale v jiné databázi bych to dělat nějak takto:

... order by case when (vlastnost='vlastnost1') then hodnota else 1 end ...

Hodně štěstí.
Petr Bravenec - Hobrasoft s.r.o.
25.4.2011 13:17 Dejv | skóre: 36 | blog: Jak ten blog nazvat ... ? | Ostrava
Rozbalit Rozbalit vše Re: Řazení podle obsahu řádků v mysql

Pokud nevadi

  1. stejne razeni ostatnich zaznamu
  2. umisteni bloku s vlastnost1 ve vysledku toho selectu "nekde" (ne na zacatku)
pak jednoduse
select ...
from ...
where ...
order by vlastnost, hodnota

Dejv

Pevne verim, ze zkusenejsi uzivatele me s mymi napady usmerni a poslou tam, kam tyto napady patri...
25.4.2011 21:09 kuka
Rozbalit Rozbalit vše Re: Řazení podle obsahu řádků v mysql
A ostatni zaznamy maji byt serazene jak? Pokud jakkoliv, tak trivialni "order by vlastnost, hodnota" nepochybne vyhovuje a neni co resit.
Petr Bravenec avatar 25.4.2011 21:47 Petr Bravenec | skóre: 43 | blog: Bravenec
Rozbalit Rozbalit vše Re: Řazení podle obsahu řádků v mysql
On to tam dotazující přímo nepíše, ale z kteréhosi příspěvku jsem pochopil, že chce vzít pořadí, v jakém jsou uložené záznamy v databázi. Proto jsem mu taky popřál hodně štěstí.

Výsledek takového dotazu by byl prostě nesmyslný a nepredikovatelný, jako mnoho jiných dotazů, které jsem občas nucený v produktech pro MySql opravovat, aby dělaly to, co si autor představoval. Dotazujícímu doporučuji, aby vždy, pokud mu na pořadí nějakým způsobem zaleží, seřadil **všechny** vybrané záznamy. Neznám MySql, ale třeba v Postgresql si lze napsat klidně vlastní funkci, případně se dá použít konstrukce case - when - else - end. Setřídit "jenom něco" znamená, že v pořádku bude právě jen "to něco". Zbytek bude OK jen do chvíle, než se program nainstaluje u zákazníka ;-)
Petr Bravenec - Hobrasoft s.r.o.
26.4.2011 00:39 eater
Rozbalit Rozbalit vše Re: Řazení podle obsahu řádků v mysql
No já chci de facto řadit všechno (v tomto slova smyslu), ale fyzicky se stejně jen seřadí to co může (duplicitní záznamy ne). Jednoduše snažím se provést řazení jako kdybych měl všechno po sloupcích (uzivatel, hodnota1, hodnotaN). Jenže v mém případě nemohu napsat order by hodnota1, hodnotaN.
Petr Bravenec avatar 26.4.2011 06:31 Petr Bravenec | skóre: 43 | blog: Bravenec
Rozbalit Rozbalit vše Re: Řazení podle obsahu řádků v mysql
Nemůžete-li napsat hodnota1, hodnotaN, udělejte si vlastní sloupec, například typu serial, podle kterého budete třídit ty ostatní záznamy tak, abyste vždy dostal všechny záznamy setříděné. Jestliže na tom nezáleží (třídit nemusíte) a přitom záleží (třídit nesmíte), pak je chyba ve vašem uvažování a databáze vám to dá jednoho dne vyžrat.
Petr Bravenec - Hobrasoft s.r.o.
26.4.2011 09:41 eater
Rozbalit Rozbalit vše Re: Řazení podle obsahu řádků v mysql
uzivatel, atribut, hodnota
==========================
magda, email, magda@magda.com
magda, skupina, guest
alojs, email, alojs@alojs.com
alojs, skupina, guest
breta, email, breta@breta.cz
breta, skupina, admins
Chci docílit podobné chování jako po order by skupina, email tzn. výsledek je
uzivatel, atribut, hodnota
==========================
breta, email, breta@breta.cz
breta, skupina, admins
alojs, email, alojs@alojs.com
alojs, skupina, guest
magda, email, magda@magda.com
magda, skupina, guest
26.4.2011 10:31 Filip Jirsák | skóre: 66 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Řazení podle obsahu řádků v mysql
Ve vašem příkladu nemáte sloupce skupina ani email. Podle příkladu dat by to tak ale mělo být, měl byste napsat SELECT, který vám vrátí
uzivatel, skupina, email
==========================
breta,    admins,  breta@breta.cz
alojs,    guest,   alojs@alojs.com
magda,    guest,   magda@magda.com
Pak to seřadíte nnormálně pomocí ORDER BY skupina, email.
26.4.2011 12:01 eater
Rozbalit Rozbalit vše Re: Řazení podle obsahu řádků v mysql
Však o to mi také jde. Seřadit to i bez těch sloupců. "Sloupcovou variantu" mít nemohu, protože uživatel může mít třeba i N skupin.
26.4.2011 13:36 Filip Jirsák | skóre: 66 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Řazení podle obsahu řádků v mysql
To musíte použít něco jiného, než SQL databázi. V SQL není žádný vztah mezi řádky, s jedinou výjimkou, a tou je právě jejich pořadí. Vy ale chcete vytvářet jakési skupiny řádků (a celou dobu to úspěšně tajíte) a řadit ty – to SQL neumožňujě.
26.4.2011 16:02 kuka
Rozbalit Rozbalit vše Re: Řazení podle obsahu řádků v mysql
A kdyz tedy ma uzivatel N skupin tak se to ma seradit jak? Muzes uvest datovy model ve forme popisu tabulek a presne napsat, co vlastne chces?
26.4.2011 16:39 eater
Rozbalit Rozbalit vše Re: Řazení podle obsahu řádků v mysql
Muzes uvest datovy model ve forme popisu tabulek a presne napsat, co vlastne chces?
Chci přesně to co jsem uvedl v tom příkladu. Pokud má uživatel1 skupiny sk1 a sk2 a uživatel2 skupiny sk2 a sk3, tak bude první uživatel1, protože má "nejmenší" skupinu.
26.4.2011 16:48 Filip Jirsák | skóre: 66 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Řazení podle obsahu řádků v mysql
Tak si do jednoho sloupečku dejte nejmenší skupinu a do druhého e-mail a řaďte podle těch sloupců. Všechny skupiny uživatele pak dotáhnete dalšími dotazy, nebo je dejte do pole. Získávat detail vazby 1:N vícenásobným načtením primárního řádku je sice oblíbený trik ORM nástrojů, mně to ale nepřipadá jako dobré řešení. Chcete získat seznam uživatelů seřazených podle nejmenší skupiny a e-mailu, tak bych taky přesně takový dotaz udělal a nelaboroval bych s vícenásobnými řádky.
26.4.2011 18:49 l0gik | skóre: 22
Rozbalit Rozbalit vše Re: Řazení podle obsahu řádků v mysql
Filip: Ale on to má podle všeho denormalizovaný v plochý tabulce. Což je sice chyba návrhu, ale jestli mu to tak leze z LDAPu a nechce s tim dělat nic složitýho, tak bych to i chápal. A tam jaksi ta duplikace primárních řádků už je a odstraňovat to pomocí group by asi nic moc nepřinese.

eater: Když se na něco ptáš, tak by bylo slušný odpovědět na dotaz. A kdybys sem plácnul schéma hned, tak z toho neni dabata na dvě stránky. Tak ho sem prosím opravdu dej (třeba ve formě sql dumpu bez dat nebo s pár řádkama), ať víme, o čem se vlastně bavíme....

PS: Nechci se vnucovat, ale imho v postu níž mam jedno z mála rozumných řešení.
26.4.2011 19:15 kuka
Rozbalit Rozbalit vše Re: Řazení podle obsahu řádků v mysql
Asi jsem trochu pomalejsi, ale v tom prikladu nevidim, ze by mel nejaky uzivatel vice skupin. Tzn. neni mi jasne, jak maji byt serazene ty radky, kde se skupina lisi od minimalni. Nicmene pokud je tedy dulezita nejmensi skupina, tak bych si na jeji zjisteni udelal view (bud "natvrdo" nebo jako vnoreny dotaz) a s nim to joinoval a pak tridil. Pokud je to potreba casto, tak by to bylo nejlepsi vhodne materializovat (napr. pokud se to z LDAPu nahrava davkove, tak si v ramci akce nahrani predpocitat atribut "nejmensi skupina" v tabulce uzivatelu apod.)
26.4.2011 19:22 l0gik | skóre: 22
Rozbalit Rozbalit vše Re: Řazení podle obsahu řádků v mysql
K tomu se nedá dotat než:

SCHÉMA, SCHÉMA, SCHÉMA, SCHÉMA, SCHÉMA, SCHÉMA, SCHÉMA, SCHÉMA, SCHÉMA, SCHÉMA, SCHÉMA, SCHÉMA

kdy už tazatel pochopí, že dokud nedodá schéma a vzorová data tak, aby každý pochopil, na co se přesně ptá, že mu nikdo rozumně neodpoví? A že plejtvá časem všech, který se o odpověď snažej???
26.4.2011 16:30 l0gik | skóre: 22
Rozbalit Rozbalit vše Re: Řazení podle obsahu řádků v mysql
Myslím, že rozumná cesta je LEFT JOINEM připojit tu samou tabulku ještě jednou s podmínkou na danou vlastnost a data seřadit podle toho leftjoinovanýho sloupce). Pokud může být atribut vícenásobný, tak

SELECT a.* FROM tabulka a LEFT JOIN tabulka b ON (a.user = b.user AND b.vlastnost = "vlastnost") ORDER BY b.hodnota

Pokud mohou být atributy vícenásobné: tzn. není unique na tabulka(user, vlastnost), chce to ještě vyšperkovat o zajištění unikátnosti. Např. tak, že se místo joinu b udělá join na

(SELECT user, min(hodnota) FROM tabulka GROUP BY user WHERE vlastnost = "vlastnost")

Druhá možnost by byla použít window funkce a nějaké custom agregační funkce, ale to myslím mysql neumí a assi by to nebylo ani moc efektivní.

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.