Byla vydána nová stabilní verze 24.05 linuxové distribuce NixOS (Wikipedie). Její kódové označení je Uakari. Podrobný přehled novinek v poznámkách k vydání. O balíčky se v NixOS stará správce balíčků Nix.
Byla vydána nová verze 1.48.0 sady nástrojů pro správu síťových připojení NetworkManager. Novinkám se v příspěvku na blogu NetworkManageru věnuje Fernando F. Mancera. Mimo jiné se v nastavení místo mac-address-blacklist nově používá mac-address-denylist.
Před 25 lety, 31. května 1999, započal vývoj grafického editoru Krita (Wikipedie). Tenkrát ještě pod názvem KImageShop a později pod názvem Krayon.
Farid Abdelnour se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 24.05.0 editoru videa Kdenlive (Wikipedie). Ke stažení brzy také na Flathubu.
David Revoy, autor mj. komiksu Pepper&Carrot, se rozepsal o své aktuální grafické pracovní stanici: Debian 12 Bookworm, okenní systém X11, KDE Plasma 5.27, …
Wayland (Wikipedie) byl vydán ve verzi 1.23.0. Z novinek lze vypíchnout podporu OpenBSD.
Craig Loewen na blogu Microsoftu představil novinky ve Windows Subsystému pro Linux (WSL). Vypíchnout lze GUI aplikaci pro nastavování WSL nebo správu WSL z Dev Home.
V sobotu 1. června lze navštívit Maker Faire Ostrava, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.
Webový server Caddy (Wikipedie) s celou řadou zajímavých vlastností byl vydán ve verzi 2.8 (𝕏). Přehled novinek na GitHubu.
Byla vydána verze 3.0 (@, 𝕏) svobodného softwaru HAProxy (The Reliable, High Performance TCP/HTTP Load Balancer; Wikipedie) řešícího vysokou dostupnost, vyvažování zátěže a reverzní proxy. Detailní přehled novinek v příspěvku na blogu společnosti HAProxy Technologies.
cyklus_citania_csv { $Query='select vtiger_crmentity.crmid as ID, vtiger_leaddetails.firstname as meno, vtiger_leaddetails.lastname as priezvisko, vtiger_leaddetails.email as email, vtiger_leadaddress.lane as ulica, vtiger_leadaddress.city as mesto, vtiger_crmentity.modifiedtime as zmena from vtiger_crmentity left join vtiger_leadaddress on vtiger_crmentity.crmid=vtiger_leadaddress.leadaddressid left join vtiger_leaddetails on vtiger_crmentity.crmid=vtiger_leaddetails.leadid left join vtiger_users on vtiger_crmentity.smownerid=vtiger_users.id where ( vtiger_leaddetails.lead_no=\''.$riadok_z_csv['id_zaznamu_napriklad_LEA12345'].'\' and vtiger_users.user_name=\''.$riadok_z_csv['prideleny_pouzivatel'].'\' and vtiger_crmentity.deleted=\'0\' ) limit 1;'; $Actual=mysql_fetch_array(mysql_query($Query,$Database)); if($Actual) { mysql_query('update vtiger_crmentity left join vtiger_leadaddress on vtiger_crmentity.crmid=vtiger_leadaddress.leadaddressid left join vtiger_leaddetails on vtiger_crmentity.crmid=vtiger_leaddetails.leadid set vtiger_leaddetails.firstname=\''.$riadok_z_csv['meno'].'\', vtiger_leaddetails.lastname=\''.$riadok_z_csv['priezvisko'].'\', vtiger_leaddetails.email=\''.$riadok_z_csv['email'].'\', vtiger_leadaddress.lane=\''.$riadok_z_csv['ulica'].'\', vtiger_leadaddress.city=\''.$riadok_z_csv['mesto'].'\', vtiger_crmentity.modifiedtime=\''.$riadok_z_csv['zmena'].'\' where ( vtiger_crmentity.crmid=\''.$Actual['ID'].'\' );'); } }Rozdelenie na select a update je tam kvôly tomu, že medzi nimi prebieha ešte veľa rôznych testov a výpisov (keby sa niekto pýtal, že prečo nie rovno update). A mňa teraz zaujíma aký je vlastne rozdiel v spájaní tabuliek pomocou left join a pomocou spájania vo where (select * from table t1, table t2 where t1.id=t2.id). Ja potrebujem aby ak bude niekde nejaká zrada aby sa nevykonal celý select. Napríklad, prepokladajme, že v tabuľke vtiger_leadaddress nenájde záznam kde bude platiť vtiger_crmentity.crmid=vtiger_leadaddress.leadaddressid. Vykoná sa select aj napriek tomu len položky ulica a mesto budú prázdne? Alebo celý select skončí chybou? A druhá otázka. Postačuje ako kontrola správnosti výsledku if($Actual)? Predpokladám, že pri "nesprávnom" selecte budem mať v premennej $Actual=NULL. Alebo treba testovať nejako ináč? Veľmi dúfam, že nejaká dobrá duša pochopila môj pokus o vykoktanie sa o čo mi vlastne ide. Vopred vám veľmi pekne ďakujem za odpovede.
A mňa teraz zaujíma aký je vlastne rozdiel v spájaní tabuliek pomocou left join a pomocou spájania vo where
Inner join můžete vždy přepsat pomocí where konstrukce. O left joinu toto neplatí. (opomíjím historickou konstrukci na Oracle "+="). A teď si jen někde přečtěte jaký je rozdíl mezi inner join a left/right join, než budete číst dál.
Kanonický způsob vyhodnocení dotazu je: napřed joiny pak teprve where. Ve Vašem případě, jak jste správně zjistil, je jedno zda použijete left join nebo inner join pro tabulky vtiger_leaddetails a vtiger_users (nikoliv pro vtiger_leadaddress). Výsledek bude stejný a optimizer si interně nahradí left join operací inner join, protože dává více možností k optimalizaci. Napřed (zcela nekanonicky) nejspíše udělá where filter na vtiger_leaddetails.lead_no a vtiger_users.user_name. Pak s výslednými leadid/smownerid, půjde do indexů tabulky vtiger_crmentity. … Tento postup by si se skutečným left join dovolit nemohl. Viz definice left join.
Napríklad, prepokladajme, že v tabuľke vtiger_leadaddress nenájde záznam kde bude platiť vtiger_crmentity.crmid=vtiger_leadaddress.leadaddressid. Vykoná sa select aj napriek tomu len položky ulica a mesto budú prázdne?
Ano vykoná, zmíněné položky budou NULL.
Postačuje ako kontrola správnosti výsledku if($Actual)?
Toto je dost nejasný dotaz. Co je správný výsledek? Je to že byl vrácen právě jeden řádek? Nejvýše jeden řádek? Nebo právě jedno crmid? Třeba si představte že pro různá crmid je můžou existovat stejné hodnoty v polích vtiger_leaddetails.lead_no a vtiger_users.user_name. Je vtiger_leaddetails.lead_no klíčem do tabulky vtiger_leaddetails? Je vtiger_users.user_name klíčem této tabulky?
Tiskni Sdílej: