Community
    • Categories
    • Recent
    • Popular
    • Users
    • Search
    • Register
    • Login

    Gesamtkapazität berechnen

    Scheduled Pinned Locked Moved Betrieb
    2 Posts 2 Posters 115 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • I Offline
      ilkas
      last edited by

      Hallo zusammen,

      ich stehe gerade mit einem SQL- Report auf Kriegsfuß.
      Unzwar möchte ich einen Report der mir u.a anzeigt Servername, gesamte Festplattenkapazität, genutzte und ungenutzte Festplattenkapazität.
      Wobei ich die Kapazitäten nach Server zusammen gerechnet haben will.
      Nach der GUI sieht der Code soweit so aus:

      SELECT 
      obj_main.isys_obj__id AS '__id__', 
      obj_main.isys_obj__title AS 'LC__UNIVERSAL__TITLE###0_1', 
      j2.isys_catg_drive_list__id AS 'isys_cmdb_dao_category_g_drive::dynamic_property_callback_capacity::isys_catg_drive_list__id::LC__CMDB_CATG__MEMORY_CAPACITY', 
      j2.isys_catg_drive_list__id AS 'isys_cmdb_dao_category_g_drive::dynamic_property_callback_used_space::isys_catg_drive_list__id::LC__CMDB__CATG__DRIVE__USED_SPACE', 
      j2.isys_catg_drive_list__id AS 'isys_cmdb_dao_category_g_drive::dynamic_property_callback_free_space::isys_catg_drive_list__id::LC__CMDB__CATG__DRIVE__FREE_SPACE' 
      
       FROM isys_obj AS obj_main 
      INNER JOIN isys_cmdb_status AS obj_main_status ON obj_main_status.isys_cmdb_status__id = obj_main.isys_obj__isys_cmdb_status__id 
      LEFT JOIN isys_catg_drive_list AS j2 ON j2.isys_catg_drive_list__isys_obj__id = obj_main.isys_obj__id  
      LEFT JOIN isys_obj_type AS j4 ON j4.isys_obj_type__id = obj_main.isys_obj__isys_obj_type__id 
      
      WHERE TRUE 
       AND  ( (j4.isys_obj_type__id != '60' ) AND (j4.isys_obj_type__id != '63' ) ) AND ( (j4.isys_obj_type__id = '59' ) )
       ORDER BY obj_main.isys_obj__title DESC
      

      Hier werden mir dann sämtliche Laufwerke die einem Server zugewiesen sind einzeln aufgelistet

      Name; Kapazität; genutzt; Frei
      ServerA; 20GB; 15GB;5GB
      ServerA; 50GB: 10GB; 40GB
      ServerB; 100GB; 20GB; 80GB
      ServerB; 25GB;10GB;15GB

      Das wird etwas unüberschaubar bei einer gewissen Menge an Server und entsprechend zugeordneten Laufwerken.
      Wie kann ich die Werte addieren das ich nur eine Zeile pro Server mit den zusammen gerechneten Werten erhalte.

      Also Ergebnis in etwa so:
      Name; Kapazität; genutzt; Frei
      ServerA; 70GB; 25GB;45GB
      ServerB; 125GB: 30GB; 95GB

      Kann mir hier wer einen Tipp geben? Ich verzweifel hier langsam.

      Viele Grüße

      LFischerL 1 Reply Last reply Reply Quote 0
      • LFischerL Offline
        LFischer @ilkas
        last edited by

        Hallo @ilkas

        ich fürchte die Werte lassen sich nicht zusammenrechnen, wenn du "Dynamische Attribute" nutzt - das sind diejenigen Attribute die NICHT mit reiner SQL Logik gelesen werden sondern die Werte aus dem PHP Backend holen.

        Die Attribute erkennst du daran, das die Labels aus solchen zusammengesetzten Werten bestehen wie isys_cmdb_dao_category_g_drive::dynamic_property_callback_capacity::isys_catg_drive_list__id::LC__CMDB_CATG__MEMORY_CAPACITY.

        Um die Werte mit reinem SQL zu kombinieren und berechnen müsstest du mit Sub-Queries arbeiten und die Berechnung von Byte zu GB selbstständig vornehmen. Das müsste etwa so aussehen:

        SELECT 
        obj_main.isys_obj__id AS '__id__', 
        obj_main.isys_obj__title AS 'LC__UNIVERSAL__TITLE###0_1', 
        -- j2.isys_catg_drive_list__id AS 'isys_cmdb_dao_category_g_drive::dynamic_property_callback_capacity::isys_catg_drive_list__id::LC__CMDB_CATG__MEMORY_CAPACITY', 
        -- j2.isys_catg_drive_list__id AS 'isys_cmdb_dao_category_g_drive::dynamic_property_callback_used_space::isys_catg_drive_list__id::LC__CMDB__CATG__DRIVE__USED_SPACE', 
        -- j2.isys_catg_drive_list__id AS 'isys_cmdb_dao_category_g_drive::dynamic_property_callback_free_space::isys_catg_drive_list__id::LC__CMDB__CATG__DRIVE__FREE_SPACE',
        (SELECT CONCAT(ROUND(SUM(isys_catg_drive_list__capacity) / 1024 / 1024 / 1024, 2), ' GB') FROM isys_catg_drive_list WHERE isys_catg_drive_list__isys_obj__id = obj_main.isys_obj__id) AS 'Capacity',
        (SELECT CONCAT(ROUND(SUM(isys_catg_drive_list__used_space) / 1024 / 1024 / 1024, 2), ' GB') FROM isys_catg_drive_list WHERE isys_catg_drive_list__isys_obj__id = obj_main.isys_obj__id) AS 'Used space',
        (SELECT CONCAT(ROUND(SUM(isys_catg_drive_list__free_space) / 1024 / 1024 / 1024, 2), ' GB') FROM isys_catg_drive_list WHERE isys_catg_drive_list__isys_obj__id = obj_main.isys_obj__id) AS 'free space'
        
         FROM isys_obj AS obj_main 
        INNER JOIN isys_cmdb_status AS obj_main_status ON obj_main_status.isys_cmdb_status__id = obj_main.isys_obj__isys_cmdb_status__id 
        -- LEFT JOIN isys_catg_drive_list AS j2 ON j2.isys_catg_drive_list__isys_obj__id = obj_main.isys_obj__id  
        LEFT JOIN isys_obj_type AS j4 ON j4.isys_obj_type__id = obj_main.isys_obj__isys_obj_type__id 
        
        WHERE TRUE 
         AND  ( (j4.isys_obj_type__id != '60' ) AND (j4.isys_obj_type__id != '63' ) ) AND ( (j4.isys_obj_type__id = '59' ) )
         ORDER BY obj_main.isys_obj__title DESC
        

        Bitte schau mal ob das bereits ausreicht und inhaltlich korrekt ist 🙂 Die auskommentierten Teile der Query können entfernt werden.

        VG Leo

        1 Reply Last reply Reply Quote 0
        • First post
          Last post