Na čem aktuálně pracují vývojáři GNOME a KDE? Pravidelný přehled novinek i s náhledy aplikací v Týden v GNOME a Týden v KDE.
Organizace Apache Software Foundation (ASF) vydala verzi 20 integrovaného vývojového prostředí a vývojové platformy napsané v Javě NetBeans (Wikipedie). Přehled novinek na GitHubu. Instalovat lze také ze Snapcraftu a Flathubu.
Desktopové prostředí Cinnamon, vyvíjené primárně pro distribuci Linux Mint, dospělo do verze 6.0. Seznam změn obsahuje především menší opravy a v říjnovém přehledu novinek v Mintu avizovanou experimentální podporu Waylandu.
OpenZFS (Wikipedie), tj. implementace souborového systému ZFS pro Linux a FreeBSD, byl vydán ve verzích 2.2.2 a 2.1.14. Přináší důležitou opravu chyby vedoucí k možnému poškození dat.
V ownCloudu byly nalezeny tři kritické zranitelnosti: CVE-2023-49103, CVE-2023-49104 a CVE-2023-49105 s CVSS 10.0, 8.7 a 9.8. Zranitelnost CVE-2023-49103 je právě využívána útočníky. Nextcloudu se zranitelnosti netýkají.
I letos vychází řada ajťáckých adventních kalendářů. Programátoři se mohou potrápit při řešení úloh z kalendáře Advent of Code 2023. Pro programátory v Perlu je určen Perl Advent Calendar 2023. Zájemci o UX mohou sledovat Lean UXmas 2023. Pro zájemce o kybernetickou bezpečnost je určen Advent of Cyber 2023…
Byla vydána verze 2.12 svobodného video editoru Flowblade (GitHub, Wikipedie). Přehled novinek v poznámkách k vydání. Videoukázky funkcí Flowblade na Vimeu. Instalovat lze také z Flathubu.
Armbian, tj. linuxová distribuce založená na Debianu a Ubuntu optimalizovaná pro jednodeskové počítače na platformě ARM a RISC-V, ke stažení ale také pro Intel a AMD, byl vydán ve verzi 23.11 Topi. Přehled novinek v Changelogu.
Po 4 měsících vývoje byla vydána nová verze 4.2 multiplatformního open source herního enginu Godot (Wikipedie, GitHub). Přehled novinek i s náhledy v příspěvku na blogu a na YouTube.
Byla vydána nová stabilní verze 23.11 linuxové distribuce NixOS (Wikipedie). Její kódové označení je Tapir. Podrobný přehled novinek v poznámkách k vydání. O balíčky se v NixOS stará správce balíčků Nix.
+----+------------+----------+----------+ | id | product_id | group_id | price | +----+------------+----------+----------+ | 61 | 3 | 0 | 100.00 | | 62 | 3 | 2 | 100.00 | | 6 | 4 | 0 | 10000.00 | +----+------------+----------+----------+A jde mi zde o sloupec group_id. Potřeboval bych z této tabulky dostat takové řádky, že pokud bude obsahovat pro jeden product_id jak řádek s group_id=0, tak i s group_id=2, tak aby mi to vrátilo řádek s group_id=2, ale pokud pro daný product_id bude jenom group_id=0, tak aby mi to vrátilo řádek s group_id=0. Zkoušel jsem už různé možnosti, ale nějak se mi nedaří přijít na to jak definovat WHERE podmínku. Předem děkuji za rady.
SELECT id, product_id, group_id, price FROM tabulka WHERE group_id=2 OR (group_id=0 AND NOT group_id=2)a toto mi to vyplivne:
+----+------------+----------+--------+ | id | product_id | group_id | price | +----+------------+----------+--------+ | 61 | 3 | 0 | 100.00 | | 62 | 3 | 2 | 100.00 | +----+------------+----------+--------+
-- existuje pouze radek s group_id = 0
select * from tabulka t
where group_id = 0
and not exists ( select 0 from tabulka
where product_id = t.product_id
and group_id != 0 )
union all
-- existuje group_id = 2 i group_id = 0 a chci dvojku
select * from tabulka t
where group_id = 2
and exists ( select 0 from tabulka
where product_id = t.product_id
and group_id = 0 )
nebo by sel pouzit outer join sam na sebe. Jsou i dalsi reseni, zalezi na tom co presne potrebujes, jestli te trapi vykon apod. Nejefektivnejsi casto byva spojeni s proceduralnim zpracovanim, pokud prichazi z hlediska aplikace v uvahu.
group_id
nějakou konkrétní hodnotu a v případě absence se má použít group_id=0
?
SELECT * FROM (SELECT * FROM tab ORDER BY group_id DESC) AS tab2 GROUP BY product_id;
SELECT COALESCE(t2.id, t1.id), t1.product_id, COALESCE(t2.group_id, t1.group_id), COALESCE(t2.price, t1.price) FROM tab t1 LEFT JOIN tab t2 ON (t1.product_id=t2.product_id AND t2.group_id=2) WHERE t1.group_id = 0;
SELECT * FROM tabulka WHERE
group_id = 2 OR
(group_id = 0 AND product_id NOT IN (SELECT product_id FROM tabulka WHERE group_id = 2))
Pokud bys chtěl řádek s nejvyšším groupid (obecnější řešení), tak
SELECT * FROM TABULKA WHERE (product_id, group_id) IN
(SELECT product_id , MAX(group_id) FROM tabulka GROUP BY product_id)
Tiskni
Sdílej: