abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 18:22 | Nová verze

    Byla vydána verze 0.2.0 v Rustu napsaného frameworku Pingora pro vytváření rychlých, spolehlivých a programovatelných síťových systémů. Společnost Cloudflare jej letos v únoru uvolnila pod licencí Apache 2.0.

    Ladislav Hagara | Komentářů: 0
    10.5. 19:11 | Nová verze

    Open source RDP (Remote Desktop Protocol) server xrdp (Wikipedie) byl vydán ve verzi 0.10.0. Z novinek je vypíchnuta podpora GFX (Graphic Pipeline Extension). Nová větev řeší také několik bezpečnostních chyb.

    Ladislav Hagara | Komentářů: 8
    10.5. 04:11 | Nová verze

    Rocky Linux byl vydán v nové stabilní verzi 9.4. Přehled novinek v poznámkách k vydání.

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

    Dellu byla odcizena databáze zákazníků (jméno, adresa, seznam zakoupených produktů) [Customer Care, Bleeping Computer].

    Ladislav Hagara | Komentářů: 19
    9.5. 21:11 | Zajímavý článek

    V lednu byl otevřen editor kódů Zed od autorů editoru Atom a Tree-sitter. Tenkrát běžel pouze na macOS. Byl napevno svázán s Metalem. Situace se ale postupně mění. V aktuálním příspěvku Kdy Zed na Linuxu? na blogu Zedu vývojáři popisují aktuální stav. Blíží se alfa verze.

    Ladislav Hagara | Komentářů: 34
    9.5. 14:33 | Pozvánky

    O víkendu 11. a 12. května lze navštívit Maker Faire Prague, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.

    Ladislav Hagara | Komentářů: 0
    8.5. 21:55 | Nová verze

    Byl vydán Fedora Asahi Remix 40, tj. linuxová distribuce pro Apple Silicon vycházející z Fedora Linuxu 40.

    Ladislav Hagara | Komentářů: 20
    8.5. 20:22 | IT novinky

    Představena byla služba Raspberry Pi Connect usnadňující vzdálený grafický přístup k vašim Raspberry Pi z webového prohlížeče. Odkudkoli. Zdarma. Zatím v beta verzi. Detaily v dokumentaci.

    Ladislav Hagara | Komentářů: 7
    8.5. 12:55 | Nová verze

    Byla vydána verze R14.1.2 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5). Přehled novinek v poznámkách k vydání, podrobnosti v seznamu změn.

    JZD | Komentářů: 0
    7.5. 18:55 | IT novinky

    Dnešním dnem lze již také v Česku nakupovat na Google Store (telefony a sluchátka Google Pixel).

    Ladislav Hagara | Komentářů: 10
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (64%)
     (7%)
     (13%)
     (15%)
    Celkem 165 hlasů
     Komentářů: 11, poslední 10.5. 18:00
    Rozcestník

    Dotaz: vnoreny SELECT a podmienka

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

    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: 49 | 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.