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

    Report: Mindestanzahl unterschritten

    Scheduled Pinned Locked Moved Betrieb
    4 Posts 3 Posters 863 Views 1 Watching
    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.
    • C Offline
      Chris1980
      last edited by

      Hallo zusammen,
      ich habe einen Report erstellt, der mir zu verschiedenen Gebäuden die gelagerte Ware anzeigt.

      Der Report soll mir ausgeben, wenn es zu einer Mengenunterschreitung kommt.

      Beispiel: Soll -> 2 Clients, 1 Client wurde entnommen, Bericht gibt aus: Lager xxx 1x Client nachbestellen

      Habt ihr eine Idee?

      Vielen Dank

      Gruß

      Chris

      1 Reply Last reply Reply Quote 0
      • T Offline
        TPrimus
        last edited by

        Hallo Chris,

        Ich hab' kurz mal was zusammengebaut was glaube ich ca. tut was du willst.

        SELECT 
        obj_main.isys_obj__id AS '__id__', 
        obj_main.isys_obj__title AS 'LC__UNIVERSAL__TITLE###1',
        2 - COUNT(*) as 'zu wenig'
        
        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_person_2_group AS j2 ON obj_main.isys_obj__id = j2.isys_person_2_group__isys_obj__id__group 
        LEFT JOIN isys_cats_person_list AS j4 ON j2.isys_person_2_group__isys_obj__id__person = j4.isys_cats_person_list__isys_obj__id 
        LEFT JOIN isys_obj AS j7 ON j7.isys_obj__id = j4.isys_cats_person_list__isys_obj__id 
        LEFT JOIN isys_obj AS j9 ON j9.isys_obj__id = j4.isys_cats_person_list__isys_obj__id 
        LEFT JOIN isys_obj_type AS j10 ON j10.isys_obj_type__id = obj_main.isys_obj__isys_obj_type__id 
        
        WHERE ( (j10.isys_obj_type__id != '60' ) AND (j10.isys_obj_type__id != '60' ) AND (j10.isys_obj_type__id != '63' ) ) AND ( (j10.isys_obj_type__id = '54' ) )
        
        GROUP BY obj_main.isys_obj__id
        HAVING COUNT(*) < 2
        ORDER BY obj_main.isys_obj__title DESC
        

        Das gibt mir von allen Personengruppen mit weniger als 2 Mitgliedern aus wieviele Mitglieder es weniger sind als 2.
        Dazu habe ich zuerst über den Abfrageeditor einen Report erstellt der mir zu allen Gruppen alle Personen ausgibt (müsstest du entsprechend auf Lager und Clients anpassen).
        Dann habe ich in den SQL-Editor gewechselt und folgende Zeilen hinzugefügt bzw. bearbeitet:

        Zeile 4: "2 - COUNT()" gibt an wieviele fehlen. Das kannst du bei deinem Beispiel z.B. so anpassen: "CONCAT('Lager ', obj_main.isys_obj__title, ' ', 2 - COUNT(), ' Client nachbestellen') AS 'zu wenig'"

        Zeile 16 - "GROUP BY": Die einfach so lassen. Wichtig ist dass in deinem Fall das Lager das obj_main ist, das erreichst du indem du beim Abfrageeditor unter Bedingung auf Objekttyp "Lager" filterst.

        Zeile 17- "HAVING": Die Zeile gibt's damit nur die ausgegeben werden wo auch was fehlt.

        Wenn sich die gewünschte Zahl ändert muss die in Zeile 4 und Zeile 17 geändert werden. Ein bisschen schwieriger wird es wenn die gewünschte Zahl nicht immer gleich sein soll.
        Probier mal ob du damit was anfangen kannst, ansonsten sag nochmal Bescheid.

        LG, Tobias

        1 Reply Last reply Reply Quote 0
        • C Offline
          Chris1980
          last edited by

          Hallo Tobi,
          erst einmal vielen Dank für deine Hilfe.

          Ich habe jedoch das Problem, dass es dieser Bericht über mehrere Lager funktionieren muss.

          Also zeige mir aus allen RMA Lagern die unterschrittenen Bestände an.

          Mit dem Abfrage-Editor habe ich folgendes Script erstellt:

          SELECT
          obj_main.isys_obj__id AS 'id',
          j9.isys_cmdb_status__title AS 'LC__UNIVERSAL__CMDB_STATUS###1',
          obj_main.isys_obj__title AS 'LC__UNIVERSAL__TITLE###1',
          j5.isys_model_manufacturer__title AS 'LC__CATG__STORAGE_MANUFACTURER###2',
          j8.isys_model_title__title AS 'LC__CMDB__CATG__MODEL###2',
          j6.isys_catg_model_list__serial AS 'LC__CMDB__CATG__SERIAL###2',
          j3.isys_catg_location_list__parentid AS 'isys_cmdb_dao_category_g_location::dynamic_property_callback_location_path::isys_catg_location_list__parentid::LC__CMDB__CATG__LOCATION_PATH'

          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_cmdb_status AS j9 ON j9.isys_cmdb_status__id = obj_main.isys_obj__isys_cmdb_status__id
          LEFT JOIN isys_catg_location_list AS j3 ON obj_main.isys_obj__id = j3.isys_catg_location_list__isys_obj__id
          LEFT JOIN isys_obj AS j4 ON j3.isys_catg_location_list__parentid = j4.isys_obj__id
          LEFT JOIN isys_catg_model_list AS j6 ON j6.isys_catg_model_list__isys_obj__id = obj_main.isys_obj__id
          LEFT JOIN isys_model_manufacturer AS j5 ON j5.isys_model_manufacturer__id = j6.isys_catg_model_list__isys_model_manufacturer__id
          LEFT JOIN isys_model_title AS j8 ON j8.isys_model_title__id = j6.isys_catg_model_list__isys_model_title__id
          LEFT JOIN isys_obj_type AS j10 ON j10.isys_obj_type__id = obj_main.isys_obj__isys_obj_type__id

          WHERE TRUE

          AND  ( (j10.isys_obj_type__id != '60' ) AND (j10.isys_obj_type__id != '60' ) ) AND ( (j10.isys_obj_type__id = '10' ) OR (j10.isys_obj_type__id = '22' ) ) AND ( (j4.isys_obj__id = '7454' ) ) OR ( (j4.isys_obj__id = '7460' ) OR (j4.isys_obj__id = '7462' ) OR (j4.isys_obj__id = '7464' ) OR (j4.isys_obj__id = '7466' ) OR (j4.isys_obj__id = '7468' ) ) ORDER BY j9.isys_cmdb_status__title ASC ;

          Wie kann ich dein Beispiel am besten integrieren?

          LG

          Chris

          1 Reply Last reply Reply Quote 0
          • kmauelK Offline
            kmauel
            last edited by

            Hallo Chris,

            du kannst das SQL von tPrimus (Danke @tPrimus) in einem Report nutzen.
            Bei "Neu" gibt es einen Pfeil, bei Klick klappt ein Menü aus, dort auf SQL-Editor klicken.

            Nun kopierst du das SQL von tPrimus einfach in SQL-Abfrage und klickst auf Vorschau vorerst, ist das dein gewolltes Ergebnis ?

            Viele Grüße,

            Kevin Mauel

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