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

    Doppelte Eintraege finden

    Scheduled Pinned Locked Moved Betrieb
    9 Posts 4 Posters 2.0k 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.
    • T Offline
      The.Man2
      last edited by

      Hallo zusammen,
      wie ist es moeglich doppelte Eintraege zu finden in der CMDB?
      Ohne das man in die Kategorien durchsucht, vielleicht mit einem eingebauten Systemtool?
      Ansonsten faellt mir nur der Report Manager ein….

      i-doit 1.5.5 PRO

      Gruesse

      1 Reply Last reply Reply Quote 0
      • J Offline
        jkondek
        last edited by

        Hallo The.Man2,

        um welche Art Eintraege geht es Dir?
        Multi-Value-Eintraege?
        Single-Value-Eintraege?
        Gleiche Objekte?
        Doppelte Kategoriezuweisungen?

        Fuer die Single-Value-Eintraege gibt es in der Verwaltung einen Button:
        Verwaltung > Systemtools > Cache/Datenbank > Datenbank > Doppelte Single-Value Eintraege loeschen

        Fuer die doppelten Kategoriezuweisungen gibt es in der Verwaltung ebenfalls etwas:
        Verwaltung > Systemtools > Cache/Datenbank > Datenbank > Doppelt zugewiesene Kategorien entfernen

        Ansonsten (fuer Multi-Value Eintraege und Objekte) faellt mir nur der Report Manager ein.

        Gruss,
        jkondek

        1 Reply Last reply Reply Quote 0
        • T Offline
          The.Man2
          last edited by

          Hi jkondek,
          speziell geht es mir um Objekte wie Server, Clients. Durch verschiedene Imports kann es passieren das doppelte Eintraege in der Datenbank sind (da ein Objekt z.B. nur den Objektnamen, aber keine SN,MAC,IP usw hat). Das dies durch den Import passieren kann und wie man dies verhindern kann ist mir klar. Trotzdem wuerde ich gern die Moeglichkeit haben dies zu kontrollieren.

          Danke fuer die schnelle Antwort

          1 Reply Last reply Reply Quote 0
          • J Offline
            jkondek
            last edited by

            Hallo The.Man2,

            ich habe mir genau fuer solche Faelle bereits einen Report erstellt:

            SELECT
            a.Objekttitel,
            a.Anzahl,
            a.ID,
            a.Typ,
            a.Status

            FROM

            (SELECT
            j1.isys_obj__title AS 'Objekttitel',
            COUNT(j1.isys_obj__title) AS 'Anzahl',
            GROUP_CONCAT(j1.isys_obj__id ORDER BY j1.isys_obj__id SEPARATOR ', ') AS 'ID',
            – GROUP_CONCAT(isys_obj_type__title ORDER BY j1.isys_obj__isys_obj_type__id SEPARATOR ', ') 'Typ',
            GROUP_CONCAT(j1.isys_obj__isys_obj_type__id ORDER BY j1.isys_obj__isys_obj_type__id SEPARATOR ', ') 'Typ',
            -- GROUP_CONCAT(isys_cmdb_status__title ORDER BY j1.isys_obj__isys_cmdb_status__id SEPARATOR ', ') AS 'Status'
            GROUP_CONCAT(j1.isys_obj__isys_cmdb_status__id ORDER BY j1.isys_obj__isys_cmdb_status__id SEPARATOR ', ') AS 'Status'

            FROM isys_obj AS j1

            LEFT JOIN isys_obj_type
            ON isys_obj_type__id = j1.isys_obj__isys_obj_type__id

            LEFT JOIN isys_cmdb_status
            ON isys_cmdb_status__id = j1.isys_obj__isys_cmdb_status__id

            WHERE TRUE
            -- AND (j1.isys_obj__isys_obj_type__id = 5
            -- OR j1.isys_obj__isys_obj_type__id = 59)

            GROUP BY j1.isys_obj__title ) a

            WHERE a.Anzahl > 1

            Ich lasse mir beim Objekttyp und beim Status allerdings lediglich die IDs ausgeben, da bei der Ausgabe des Titels die Uebersichtlichkeit verloren geht (z.B. Objekttitel Server: LC__CMDB__OBJTYPE__SERVER, Status In Betrieb: LC__CMDB_STATUS__IN_OPERATION). Vorausgesetzt, Du hast die Titel nicht eigenstaendig angepasst.
            (Den Titel kannst Du Dir ausgeben lassen, wenn Du die auskommentierten Zeilen im SELECT-Statement nutzt, dafuer allerdings die beiden anderen Zeilen auskommentieren.)

            Was beim Status prinzipiell noch moeglich waere (falls Du den ueberhaupt braucht): die Titel einfach in einer CASE Abfrage nach Belieben setzen.
            Falls Du Deine Objekttypen einschraenken moechtest, kannst Du die WHERE-Abfrage einkommentieren und gegen die entsprechenden Objekttypen-IDs ersetzen/ergaenzen.

            Gruss,
            jkondek

            1 Reply Last reply Reply Quote 0
            • H Offline
              Hajo2031
              last edited by

              Wir haben nach einer längeren Import-Zeit durch Excel richtig aufgeräumt! Dazu haben wir einen Report mit allen Items und den entsprechenden Kategorien erstellt und dann in Excel die doppelten Einträge farblich markiert.

              Nach der Bereinigung habe ich dann in den Validierungseinstellung einige Attribute auf "Eindeutig" gestellt, weshalb sie global nur einmal vorkommen können.

              1 Reply Last reply Reply Quote 0
              • T Offline
                The.Man2
                last edited by

                Danke,
                hat super funktioniert.

                1 Reply Last reply Reply Quote 0
                • A Offline
                  andreas.lehmann
                  last edited by

                  Hallo. Finde die Idee auch gut.
                  Wie müsste man den Report erweitern, dass er nur doppelte Objekte anzeigt, die nicht den Status z.B. "Gelöscht" haben?
                  Bin nicht so fit in SQL.
                  Danke!

                  1 Reply Last reply Reply Quote 0
                  • J Offline
                    jkondek
                    last edited by

                    Hallo andyle,

                    meinst Du den Zustand oder den Status? Das sind zwei unterschiedliche Abfragen.

                    Der Zustand kann unfertig (1), normal (2), archiviert (3) und geloescht (4) sein.
                    Die passende Abfrage um nur die Objekte im Status normal zu erhalten:

                    […]
                    WHERE TRUE
                    – AND (j1.isys_obj__isys_obj_type__id = 5
                    -- OR j1.isys_obj__isys_obj_type__id = 59)
                    AND j1.isys_obj__status = 2
                    […]

                    Der Status kann alles sein, was in Deiner Tabelle isys_cmdb_status enthalten ist.
                    Von dort wuerde ich auch die ID fuer die Abfrage holen:

                    […]
                    WHERE TRUE
                    – AND (j1.isys_obj__isys_obj_type__id = 5
                    -- OR j1.isys_obj__isys_obj_type__id = 59)
                    AND j1.isys_obj__isys_cmdb_status__id = 6 (z.B. fuer "in Betrieb")
                    […]

                    Gruss,
                    jkondek

                    1 Reply Last reply Reply Quote 0
                    • A Offline
                      andreas.lehmann
                      last edited by

                      @jkondek:

                      meinst Du den Zustand oder den Status? Das sind zwei unterschiedliche Abfragen.

                      Zustand natürlich, danke!

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