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í
×
    dnes 12:55 | Nová verze

    CiviCRM (Wikipedie) bylo vydáno v nové verzi 6.14.0. Podrobnosti o nových funkcích a opravách najdete na release stránce. CiviCRM je robustní open-source CRM systém navržený speciálně pro neziskové organizace, spolky a občanské iniciativy. Projekt je napsán v jazyce PHP a licencován pod GNU Affero General Public License (AGPLv3). Český překlad má nyní 45 % přeložených řetězců a přibližuje se milníku 50 %. Potřebujeme vaši pomoc, abychom se dostali dál. Pokud máte chuť přispět překladem nebo korekturou, přidejte se na platformu Transifex.

    jardaIT | Komentářů: 0
    dnes 12:22 | Bezpečnostní upozornění

    Další lokální zranitelností Linuxu je ssh-keysign-pwn. Uživatel si může přečíst obsah souborů, ke kterým má právo ke čtení pouze root, například soubory s SSH klíči nebo /etc/shadow. V upstreamu již opraveno [oss-security mailing list].

    Ladislav Hagara | Komentářů: 0
    včera 17:22 | Komunita

    Singularity (YouTube) je nejnovější otevřený film od Blender Studia. Jedná se o jejich první 4K HDR film.

    Ladislav Hagara | Komentářů: 0
    včera 16:55 | Zajímavý software

    Vyšla hra Život Není Krásný: Poslední Exekuce (Steam, ProtonDB). Kreslená point & click adventura ze staré školy plná černého humoru a nekorektního násilí. Vžijte se do role zpustlého exekutora Vladimíra Brehowského a projděte s ním jeho poslední pracovní den. Hra volně navazuje na sérii Život Není Krásný.

    Ladislav Hagara | Komentářů: 16
    včera 14:00 | Zajímavý projekt

    Společnost Red Hat představila Fedora Hummingbird, tj. linuxovou distribuci s nativním kontejnerovým designem určenou pro vývojáře využívající AI agenty.

    Pinhead | Komentářů: 6
    včera 02:22 | Zajímavý software

    Hru The Legend of Zelda: Twilight Princess od společnosti Nintendo si lze nově díky projektu Dusklight (původně Dusk) a reverznímu inženýrství zahrát i na počítačích a mobilních zařízeních. Vyžadována je kopie původní hry (textury, modely, hudba, zvukové efekty, …). Ukázka na YouTube. Projekt byl zahájen v srpnu 2020.

    Ladislav Hagara | Komentářů: 0
    včera 01:11 | Nová verze

    Byla vydána nová major verze 29.0 programovacího jazyka Erlang (Wikipedie) a související platformy OTP (Open Telecom Platform, Wikipedie). Detailní přehled novinek na GitHubu.

    Ladislav Hagara | Komentářů: 0
    13.5. 21:22 | Bezpečnostní upozornění

    Po zranitelnostech Copy Fail a Dirty Frag přichází zranitelnost Fragnesia. Další lokální eskalace práv na Linuxu. Zatím v upstreamu neopravena. Přiřazeno ji bylo CVE-2026-46300.

    Ladislav Hagara | Komentářů: 1
    13.5. 14:00 | Komunita

    Sovereign Tech Agency (Wikipedie) prostřednictvím svého fondu Sovereign Tech Fund podpoří KDE částkou 1 285 200 eur.

    Ladislav Hagara | Komentářů: 8
    13.5. 12:55 | IT novinky

    Google na včerejší akci The Android Show | I/O Edition 2026 (YouTube) představil celou řadu novinek: Gemini Intelligence, notebooky Googlebook, novou generaci Android Auto, …

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (13%)
     (8%)
     (2%)
     (14%)
     (31%)
     (4%)
     (6%)
     (3%)
     (16%)
     (26%)
    Celkem 1625 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník

    Dotaz: vnoreny SELECT a podmienka

    7.5.2009 17:09 tina
    vnoreny SELECT a podmienka
    Přečteno: 2698×

    Ahoj, mam nasledujucu qwery:

    SELECT  policy_table.user_group_name,
    	policy_table.object_spec_desc, 
    	policy_table.action_spec_desc, 
    	policy_table.object_specification, 
    	service_type_action.service_type_name, 
    	service_type_action.action_name
    
    FROM policy_table
    
    LEFT JOIN service_type_action
    
    ON policy_table.action_specification = service_type_action.service_action_id;

    z ktorej vypis je nasledujuci:

     user_group_name | object_spec_desc | action_spec_desc | object_specification | service_type_name | action_name
    -----------------+------------------+------------------+----------------------+-------------------+-------------
     superUserGroup  | user             | serviceAction    | bob                  | cas               | grantAll
     analytici       | userGroup        | serviceAction    | analytici            | cas               | grantAll
     vedci           | userGroup        | serviceAction    | vedci                | cas               | grantAll
     vedci           | trustAnchor      | serviceAction    | KarolovaTA           | cas               | grantAll
     superUserGroup  | user             | serviceAction    | karol                | cas               | grantAll
     superUserGroup  | object           | serviceAction    | 4                    | cas               | grantAll
     superUserGroup  | objectGroup      | serviceAction    | data                 | cas               | grantAll
     superUserGroup  | serviceType      | serviceAction    | directory            | cas               | grantAll
     superUserGroup  | object           | serviceAction    | 1                    | cas               | superuser
     analytici       | objectGroup      | serviceAction    | data                 | directory         | citanie
     superUserGroup  | object           | serviceAction    | 1                    | directory         | citanie
    
    

    Ak object_specification je cislo tak referuje na object_id tabulky object_table kde v stlpci object_name
    je meno objektu ktore potrebujem zobrazit vo vypise miesto tohoto cisla. Ak v qwery miesto policy_table.object_specification
    dam vnoreny select: (SELECT object_table.object_name FROM object_table WHERE object_table.object_id = policy_table.object_specification LIMIT 1)
    tak sa mi mena tych objektov vo vypise zobrazia, ale ostatne riadky v stlpci object_specification su prazdne. 

     

    Cela qwery po pridani vnoreneho selectu:

    SELECT 	policy_table.user_group_name, 
    	policy_table.object_spec_desc,
    	policy_table.action_spec_desc,
    	(SELECT object_table.object_name FROM object_table WHERE object_table.object_id = policy_table.object_specification LIMIT 1),
     	service_type_action.service_type_name,
    	service_type_action.action_name 
    
    FROM policy_table 
    
    LEFT JOIN service_type_action 
    
    ON policy_table.action_specification = service_type_action.service_action_id;
     

     

    user_group_name | object_spec_desc | action_spec_desc |         ?column?         | service_type_name | action_name
    -----------------+------------------+------------------+--------------------------+-------------------+-------------
    superUserGroup  | user             | serviceAction    |                          | cas               | grantAll
    analytici       | userGroup        | serviceAction    |                          | cas               | grantAll
    vedci           | userGroup        | serviceAction    |                          | cas               | grantAll
    vedci           | trustAnchor      | serviceAction    |                          | cas               | grantAll
    superUserGroup  | user             | serviceAction    |                          | cas               | grantAll
    superUserGroup  | object           | serviceAction    | ftp://ulozisko.yweb.sk/* | cas               | grantAll
    superUserGroup  | objectGroup      | serviceAction    |                          | cas               | grantAll
    superUserGroup  | serviceType      | serviceAction    |                          | cas               | grantAll
    superUserGroup  | object           | serviceAction    | casServer                | cas               | superuser
    analytici       | objectGroup      | serviceAction    |                          | directory         | citanie
    superUserGroup  | object           | serviceAction    | casServer                | directory         | citanie

     


    Nevie mi niekto poradit ako formulovat qwery aby sa zobrazili mena aj mena objektov sucasne?

     
     

     

    Odpovědi

    7.5.2009 21:01 ZAH | skóre: 43 | blog: ZAH
    Rozbalit Rozbalit vše Re: vnoreny SELECT a podmienka
    Seš si jist, že vždy vrací
    SELECT object_table.object_name FROM object_table WHERE object_table.object_id = policy_table.object_specification LIMIT 1
    
    dotaz záznam.
    7.5.2009 21:25 tina
    Rozbalit Rozbalit vše Re: vnoreny SELECT a podmienka

    No to nie lebo su tam iba dva zaznamy cize na object_id = 1 a 4. Tu je tabulka object_table:

     object_id |       object_name        | namespace_nickname
    -----------+--------------------------+--------------------
             1 | casServer                | casNamespace
             4 | ftp://ulozisko.yweb.sk/* | FTPDirectoryTree
    
    mess avatar 7.5.2009 21:06 mess | skóre: 43 | blog: bordel | Háj ve Slezsku - Smolkov
    Rozbalit Rozbalit vše Re: vnoreny SELECT a podmienka
    Tohle by nešlo?
    SELECT 	policy_table.user_group_name, 
    	policy_table.object_spec_desc,
    	policy_table.action_spec_desc,
    	object_table.object_name,
    	(SELECT object_table.object_name FROM object_table WHERE (object_table.object_id = policy_table.object_specification or object_table.object_name = policy_table.object_specification) LIMIT 1),
     	service_type_action.service_type_name,
    	service_type_action.action_name 
    
    FROM policy_table 
    
    LEFT JOIN service_type_action 
    
    ON policy_table.action_specification = service_type_action.service_action_id;
    Případně tam dej druhý join s object_table (takže ve výsledku bude join 3 tabulek).
    Cez párne mesiace zošíváš vaginy, cez neparne montuješ hajzle.
    7.5.2009 21:48 tina
    Rozbalit Rozbalit vše Re: vnoreny SELECT a podmienka

    TO nie vyhoti my to chybu:

    CHYBA:  chýbajúci záznam v klauzuli FROM pre tabulku "object_table"
    
    8.5.2009 16:06 pSipi
    Rozbalit Rozbalit vše Re: vnoreny SELECT a podmienka

    Pouzi Case

    Case

    When  (SELECT object_table.object_name FROM object_table WHERE object_table.object_id = policy_table.object_specification LIMIT 1) = Null Then policy_table.object_specification

    Else (SELECT object_table.object_name FROM object_table WHERE object_table.object_id = policy_table.object_specification LIMIT 1)

    End Case

     

    Neviem ci je spravny syntax. Ja pisem hlavne v TSQL

    8.5.2009 16:07 pSipi
    Rozbalit Rozbalit vše Re: vnoreny SELECT a podmienka

    Popripade urob ten join a vysledok urob z obidvoch stlpcov cez case alebo isnull (ma mysql isnull?)

    8.5.2009 17:21 tina
    Rozbalit Rozbalit vše Re: vnoreny SELECT a podmienka

    Super, takto som to upravil a ide to:

    SELECT 	policy_table.user_group_name,
    	policy_table.object_spec_desc, 
    	policy_table.action_spec_desc, 
    	CASE WHEN (SELECT object_table.object_name FROM object_table WHERE object_table.object_id = policy_table.object_specification LIMIT 1) IS NULL THEN 
    		policy_table.object_specification 
    	ELSE (SELECT object_table.object_name FROM object_table WHERE object_table.object_id = policy_table.object_specification LIMIT 1) 
    	END, 
    	service_type_action.service_type_name, 
    	service_type_action.action_name 
    
    FROM policy_table 
    
    LEFT JOIN service_type_action 
    
    ON policy_table.action_specification = service_type_action.service_action_id;
    
    
    
    


    Dakujem Vsetkym za pomoc, hlavne pSipi.

     

    xkucf03 avatar 9.5.2009 20:33 xkucf03 | skóre: 50 | blog: xkucf03
    Rozbalit Rozbalit vše Re: vnoreny SELECT a podmienka
    1. Špatně navržený datový model (v jednom sloupci se míchají jak textové hodnoty, tak číselné odkazy někam jinam) → jestli do toho modelu můžeš zasáhnout, tak to udělej (v tom sloupečku bude např. jen číslo, cizí klíč vedoucí do object_table).
    2. Tenhle CASE funguje, ale ten vnořený SELECT se bude volan u každého řádku a pokud výsledek nebude NULL, zavolá se ještě jednou, aby se ta hodnota zjistila (THEN).
    3. Místo podmínky můžeš použít funkci NVL(), v MySQL se jmenuje IFNULL(sloupeček1, sloupeček2) – pokud je sloupeček1 NULL, nahradí se hodnotou sloupeček2. Místo sloupeček2 může být i vnořený dotaz:
      IFNULL(sloupeček1, (SELECT 'ahoj')
      
      Jenže tady narážíš na prasáckost toho modelu – alespoň malé zlepšení by bylo, mít tam místo jednoho sloupečku dva – pokud je ten jeden nulový (NULL), dohledáš si pomocí ifnull druhého sloupečku a vnořeného dotazu tu správnou hodnotu (pak se ten vnořený select pustí, jen když je potřeba).
    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes

    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.