Svobodná webová platforma pro sdílení a přehrávání videí PeerTube (Wikipedie) byla vydána v nové major verzi 6. Přehled novinek i s náhledy a videi v oficiálním oznámení a na GitHubu (6.0.0, 6.0.1).
S eDoklady lze mít od ledna 2024 občanku v mobilní aplikaci [Digitální a informační agentura – DIA].
Google představil novou doménu nejvyššího řádu: .meme. Viz například knowyour.meme nebo find.meme.
IKEA představila 3 senzory pro chytrou domácnost: senzor na dveře a okna PARASOLL, bezdrátový pohybový senzor VALLHORN a senzor úniku vody BADRING. Budou kompatibilní s Home Assistant?
Weston, referenční implementace kompozitoru pro Wayland, byl vydán ve verzi 13.0.0. Přehled novinek v oznámení.
Laboratoře CZ.NIC vydaly novou verzi 4.23.0 aplikace Datovka, tj. svobodné multiplatformní desktopové aplikace pro přístup k datovým schránkám a k trvalému uchovávání datových zpráv v lokální databázi. Přidána byla podpora pro velkoobjemové datové zprávy (VoDZ) a pro typy datových schránek PFO_ARCH, PFO_AIAT a PFO_AZI. Další novinkou je pamatování velikosti dialogových oken, pozice ovládacích prvků, šířek sloupců a řazení položek
… více »Distribuce Tails specializující se ochranu online soukromí uživatele byla vydána ve verzi 5.20. Mimo jiné aktualizuje Tor Browser (13.0.4) a Thunderbird (115.5), opravuje několik chyb.
Bylo rozhodnuto, že Red Hat Enterprise Linux 10, jehož vydání je plánováno na první pololetí 2025, bude už bez X serverů. Zůstane pouze Xwayland.
Mobilní Datovka, tj. svobodná aplikace pro přístup k datovým schránkám pro zařízení s operačním systémem iOS a Android, byla minulá týden vydána v nové verzi 2.0.0. Zásadně bylo zmodernizováno uživatelské rozhraní. Přibyla možnost přepínat aplikaci mezi světlým a tmavým režimem. Současně byl publikován rozhovor QaA: Projekt Datovka očima vývojářů.
Multiplatformní open source aplikace scrcpy (Wikipedie) pro zrcadlení obrazovky i audia připojeného zařízení se systémem Android na desktopu a umožňující ovládání tohoto zařízení z desktopu, byla vydána v nové verzi 2.3.
SELECT R.cislo FROM polozka P, relace R, spolecne S WHERE P.typ=12 and P.cislo=R.potomek and typ_potomka='P' and S.typ='P' and S.cislo=R.potomek AND S.vytvoreno<=now() ORDER BY S.vytvoreno DESC LIMIT 0,15Naivne jsem pridal do selectu sloupecek S.pridal, ktery obsahuje id autora, a doplnil
GROUP by S.pridal
, coz zafungovalo, ale seznam nebyl setrizen podle casu. Klauzule DISTINCT
take nema zadny efekt, protoze id relace je vzdy unikatni. Tim jsem uvizl a nez to zacnu resit v jave, poradim se s vami, zda na neco neprijdete.
with polozky as ( SELECT R.cislo, s.vytvoreno, s.pridal FROM polozka P, relace R, spolecne S WHERE P.typ=12 and P.cislo=R.potomek and typ_potomka='P' and S.typ='P' and S.cislo=R.potomek AND S.vytvoreno<=now() ) select * from polozky xx where not exists ( select 0 from polozky where pridal = xx.pridal and vytvoreno > xx.vytvoreno )Te javy bych se zas tak moc nebal, jestlize ted tahas 15, muzes tahat rekneme 30 a pokud by to nestacilo, dotahnout si dalsi - je to samozrejme pomalejsi, ale predpokladam, ze v 99% pripadu by se vystacilo s jednim dotazem.
... AS a INNER JOIN (SELECT MAX(vytvoreno) AS vytvoreno, pridal FROM spolecne) AS b ON (a.vytvoreno = b.vytvoreno AND a.pridal = b.pridal)
SELECT R.cislo FROM polozka P INNER JOIN relace R ON (P.typ=12 and P.cislo=R.potomek and typ_potomka='P') INNER JOIN spolecne S ON (S.typ='P' and S.cislo=R.potomek AND S.vytvoreno<=now()) INNER JOIN ( SELECT MAX(vytvoreno) AS vytvoreno, pridal FROM spolecne WHERE S.typ = 'P' AND S.vytvoreno<=now() GROUP BY pridal) AS U ON (S.vytvoreno = U.vytvoreno AND S.pridal = U.pridal AND S.cislo = U.cislo)) ORDER BY S.vytvoreno DESC LIMIT 0,15Nejak takto by to melo fungovat, inner joiny jsou v podstate identicke s puvodnim pouzitim where, akorat mi prijdou prehlednejsi. Mozna tam je nejaka chyba a nejspis by to bylo dobre nejak zoptimalizovat. No, uvidite.
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ORDER BY S.vytvoreno
Vice si pohraju vecer
ERROR 1054 (42S22): Unknown column 'S.typ' in 'where clause'coz resi odstraneni prefixu S. Pak to ale skonci na to, ze tabulka U nema sloupecek cislo:
Unknown column 'U.cislo' in 'on clause'
SELECT R.cislo FROM polozka P INNER JOIN relace R ON (P.typ=12 and P.cislo=R.potomek and typ_potomka='P') INNER JOIN spolecne S ON (S.typ='P' and S.cislo=R.potomek AND S.vytvoreno<=now()) INNER JOIN ( SELECT MAX(cislo) AS cislo, pridal FROM spolecne WHERE typ = 'P' AND vytvoreno >= now() GROUP BY pridal ) AS U ON (S.pridal = U.pridal AND S.cislo = U.cislo) ORDER BY S.vytvoreno DESC LIMIT 0,15To vrati od kazdeho uzivatele vzdy pouze zaznamy s nejvyssim cislem typu 'P'. Pokud cislo neni nejvyssi u nejnovejsiho zaznamu daneho typu (i kdyz asi je, kdyz je cislo + typ unikatni), pak se to musi hnat pres vytvoreno, ale to je hloupe, protoze nevim, zda je zajistena jedinecnost. v kazdem pripade takto:
SELECT R.cislo FROM polozka P INNER JOIN relace R ON (P.typ=12 and P.cislo=R.potomek and typ_potomka='P') INNER JOIN spolecne S ON (S.typ='P' and S.cislo=R.potomek AND S.vytvoreno<=now()) INNER JOIN ( SELECT MAX(vytvoreno) AS vytvoreno, pridal FROM spolecne WHERE typ = 'P' AND vytvoreno >= now() GROUP BY pridal ) AS U ON (S.pridal = U.pridal AND S.vytvoreno = U.vytvoreno) ORDER BY S.vytvoreno DESC LIMIT 0,15
S.Pridal
.
SELECT S.pridal,MAX(R.cislo) AS cisloPosledni,MIN(R.cislo) AS cisloPrvni FROM relace AS R INNER JOIN polozka AS P ON R.typ_potomka='P' AND P.typ=12 AND P.cislo=R.potomek INNER JOIN spolecne AS S ON S.cislo=R.potomek AND S.typ='P' AND S.vytvoreno<=now() GROUP BY S.pridal ORDER BY S.vytvoreno DESC LIMIT 0,15Což by mohlo být původní
SELECT S.pridal,MAX(R.cislo) AS cisloPosledni,MIN(R.cislo) AS cisloPrvni FROM polozka P, relace R, spolecne S WHERE P.typ=12 and P.cislo=R.potomek and typ_potomka='P' and S.typ='P' and S.cislo=R.potomek AND S.vytvoreno<=now() GROUP BY S.pridal ORDER BY S.vytvoreno DESC LIMIT 0,15Omlouvám se jestli mi něco uniklo a nepobral jsem to…
R.cislo
, které odpovídají více zápiskům.S.pridal
.relace
mají primární index jako autoincrement a je to pole cislo
, tak jsem předpokládám, že nejvyšší cislo
na daného uživatele je poslední záznam a nejnižší 1. záznam.cislo
prvního a posledního záznamu relace.Neplati, dulezitejsi je S.vytvoreno. Blogy je totiz mozne schedulovat / odkladat, takze treba zapisek vytvoris v lednu, ale publikujes jej az v unoru. Zapisky z konce ledna budou tedy starsi, prestoze maji vyssi id.
R.cisla
, S.pridal
S.vytvoreno
(... teda doufám):
SELECT Max(RR.cislo) as poslednicislo FROM (SELECT S.pridal, MAX(S.vytvoreno) AS maxvytvoreno FROM relace AS R INNER JOIN polozka AS P ON R.typ_potomka='P' AND P.typ=12 AND P.cislo=R.potomek INNER JOIN spolecne AS S ON S.cislo=R.potomek AND S.typ='P' AND S.vytvoreno<=NOW() GROUP BY S.pridal ORDER BY Max(S.vytvoreno) DESC ) AS RPS INNER JOIN spolecne as SS ON SS.pridal = RPS.pridal AND SS.vytvoreno = RPS.maxvytvoreno INNER JOIN relace as RR ON RR.typ_potomka='P'AND RR.potomek=SS.cislo GROUP BY SS.pridal LIMIT 0,15POZOR: Pokud uživatel vložil více příspěvků v čase 1 sec. - smůla - budou tam všechny
SELECT column2 FROM (SELECT column2,id FROM t1 ORDER BY column1 DESC) AS tt1 INNER JOIN t2 ON tt1.id = t2.t1id_fk WHERE t2.column42 > 7Vrací výsledek tříděný dle
column1
, ale ve výsledku column1
neníSELECT * FROM (SELECT TOP 3 FROM t1 ORDER BY column DESC) as tt1 ORDER BY column ASCVrací 3 poslední (dle
column
) záznamy z t1 setříděné dle column
vzestupněSELECT R.cislo FROM relace AS R INNER JOIN polozka AS P ON R.typ_potomka='P' AND P.typ=12 AND P.cislo=R.potomek INNER JOIN spolecne AS S ON S.cislo=R.potomek AND S.typ='P' AND S.vytvoreno<=now() ORDER BY S.vytvoreno DESC LIMIT 0,15Pokud předcházející platí, chyba je (u mě) v následujícím ... kde ? :)
R.cislo
je třeba omezit tak, aby tam byl jen 1× záznam pro S.Pridal
a kolekce byla stále setříděná dle S.vytvoreno
S.Pridal
má být záznam s nejvyšším datem S.vytvoreno
(ale S.vytvoreno
je zároveň <=NOW()).
SELECT X.MaxCislo FROM (SELECT Max(RR.cislo) as Maxcislo FROM ( SELECT S.pridal, Max(S.vytvoreno) as lastpublished FROM relace AS R INNER JOIN polozka AS P ON R.typ_potomka='P' AND P.typ=12 AND P.cislo=R.potomek INNER JOIN spolecne AS S ON S.cislo=R.potomek AND S.typ='P' AND S.vytvoreno<=now() GROUP BY S.pridal ) as F INNER JOIN spolecne AS SS ON SS.typ='P' AND SS.vytvoreno<=now() AND SS.pridal = F.pridal AND SS.vytvoreno = F.lastpublished INNER JOIN relace AS RR ON RR.typ_potomka = 'P' AND RR.potomek = SS.cislo INNER JOIN polozka AS PP ON PP.typ=12 AND PP.cislo=RR.potomek GROUP BY F.pridal ) AS X INNER JOIN relace RRR ON X.Maxcislo = RRR.cislo INNER JOIN spolecne as SSS ON RRR.potomek = SSS.cislo AND SSS.typ = 'P' ORDER BY SSS.vytvoreno DESC LIMIT 0,15Tímto končím :)
pridal
, vyšel bych z tabulky autorů (tu tam nemáš uvedenou, ale předpokládám, že existuje), kde je právě každý autor jen jednou.
A ke každému autorovi bych pomocí vnořeného selectu dotáh jeho nejnovější záznam vyhovující podmínkám.
Tedy vpodstatě tvůj select z původního dotazu ofiltrovaný navíc na pridal=autor
, seřazený dle vytvoreno
sestupne a limit 1
Tento výsledek bych seřadil dle vytvoreno
sestupne s limitem 15.
Z hlavy nedám teď SQL dohromady, já to zas tak často nepoužívám a nemám syntaxi v hlavě.
Jen nástin:
SELECT a.autor, (SELECT cislo, vytvoreno WHERE ...... S.pridal=A.autor ORDER BY vytvoreno DESC LIMIT 1) ORDER BY vytvoreno DESC LIMIT 15
Tiskni
Sdílej: