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í
×
    včera 01:00 | Komunita

    Debian dnes slaví 32 let. Ian Murdock oznámil vydání "Debian Linux Release" 16. srpna 1993.

    Ladislav Hagara | Komentářů: 9
    15.8. 17:44 | IT novinky

    Policisté zadrželi odsouzeného drogového dealera Tomáše Jiřikovského, který daroval ministerstvu spravedlnosti za tehdejšího ministra Pavla Blažka (ODS) bitcoiny v miliardové hodnotě, a zajistili i darovanou kryproměnu. Zadržení Jiřikovského může být podle ministerstva důležité k rozuzlení kauzy, která vypukla koncem května a vedla ke konci Blažka. Zajištění daru podle úřadu potvrzuje závěry dříve publikovaných právních

    … více »
    Ladislav Hagara | Komentářů: 6
    15.8. 13:44 | IT novinky

    Administrativa amerického prezidenta Donalda Trumpa jedná o možném převzetí podílu ve výrobci čipů Intel. Agentuře Bloomberg to řekly zdroje obeznámené se situací. Akcie Intelu v reakci na tuto zprávu výrazně posílily. Trump minulý týden označil Tana za konfliktní osobu, a to kvůli jeho vazbám na čínské společnosti, čímž vyvolal nejistotu ohledně dlouholetého úsilí Intelu o obrat v hospodaření. Po pondělní schůzce však prezident o šéfovi Intelu hovořil příznivě.

    Ladislav Hagara | Komentářů: 3
    15.8. 05:44 | IT novinky

    Společnost Purism stojící za linuxovými telefony a počítači Librem má nově v nabídce postkvantový šifrátor Librem PQC Encryptor.

    Ladislav Hagara | Komentářů: 10
    14.8. 18:00 | Nová verze

    VirtualBox, tj. multiplatformní virtualizační software, byl vydán v nové verzi 7.2. Přehled novinek v Changelogu. Vypíchnou lze vylepšené GUI.

    Ladislav Hagara | Komentářů: 0
    14.8. 14:11 | IT novinky

    Eric Migicovsky, zakladatel společnosti Pebble, v lednu oznámil, že má v plánu spustit výrobu nových hodinek Pebble s již open source PebbleOS. V březnu spustil předprodej hodinek Pebble Time 2 (tenkrát ještě pod názvem Core Time 2) za 225 dolarů s dodáním v prosinci. Včera představil jejich konečný vzhled (YouTube).

    Ladislav Hagara | Komentářů: 26
    14.8. 12:44 | Zajímavý software

    Byla oznámena nativní podpora protokolu ACME (Automated Certificate Management Environment) ve webovém serveru a reverzní proxy NGINX. Modul nginx-acme je zatím v preview verzi.

    Ladislav Hagara | Komentářů: 1
    14.8. 12:22 | Nová verze

    Vývojáři KDE oznámili vydání balíku aplikací KDE Gear 25.08. Přehled novinek i s náhledy a videi v oficiálním oznámení.

    Ladislav Hagara | Komentářů: 0
    13.8. 11:55 | IT novinky

    Společnost Perplexity AI působící v oblasti umělé inteligence (AI) podala nevyžádanou nabídku na převzetí webového prohlížeče Chrome internetové firmy Google za 34,5 miliardy dolarů (zhruba 723 miliard Kč). Informovala o tom včera agentura Reuters. Upozornila, že výše nabídky výrazně převyšuje hodnotu firmy Perplexity. Společnost Google se podle ní k nabídce zatím nevyjádřila.

    Ladislav Hagara | Komentářů: 5
    13.8. 04:33 | Bezpečnostní upozornění

    Intel vydal 34 upozornění na bezpečnostní chyby ve svých produktech. Současně vydal verzi 20250812 mikrokódů pro své procesory řešící 6 bezpečnostních chyb.

    Ladislav Hagara | Komentářů: 0
    Kolik tabů máte standardně otevřeno ve web prohlížeči?
     (52%)
     (19%)
     (4%)
     (5%)
     (2%)
     (1%)
     (1%)
     (16%)
    Celkem 402 hlasů
     Komentářů: 23, poslední 4.8. 13:01
    Rozcestník

    Dotaz: vnoreny SELECT a podmienka

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

    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.