Announcement

Collapse
No announcement yet.

Anfängerfrage: Ergebnistabelle mit Anzahleinträgen pro DB Tabelle erstellen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Anfängerfrage: Ergebnistabelle mit Anzahleinträgen pro DB Tabelle erstellen

    Hallo zusammen, mit Bitte um Hilfe bei der nachfolgenden Frage

    Meine Anwendung erzeugt 200 Ergebnisse die in 200 einzlnen Tabellen abgelegt sind.

    Für das Management muss ich jetzt eine Übersicht erzeugen, die die Einträge pro Abfrage der einzlnen Tabellen aufzeigt

    Also vom Ansatz her

    SELECT COUNT(Filiale)AS ANZAHL_Filliale
    FROM dbo.Verkausstatistik_1

    (in Summe gibt es 200 Verkaufsstatistiken)

    Nur wenn ich das jetzt 200 mal mache, dann sind das jeweils wieder 200 Einzelfiles und das manuell zu kopieren ist ja der Wahnsinn.

    Daher meine Bitte: wie schreibt man eine Abfrage, die den Tabellenname in Spalte 1 liest und in Spalte 2 die Anzahl der Einträge pro Tabellenname aufzeigt??


    Spalte 1 (Tabname) Spalte 2 (Anzahl Einträge aus Tab)
    dbo.Verkaufsstatistik 1 23
    dbo.Verkaufsstatistik 2 5
    dbo.Verkaufsstatistik 3 45
    dbo.Verkaufsstatistik 4 32

    Vielen Dank für Eure Hilfe!!
    Zuletzt editiert von Christian Marquardt; 22.09.2017, 08:54. Reason: wiederhergestellt

  • #2
    Kann etwa so aussehen:
    Code:
    declare @x int, @cmd varchar(200)
    create table #tmp (name varchar(200), anzahl int)
    
    set @x = 1
    while @x <= 200 begin
      set @cmd = 'SELECT '''dbo.Verkaufsstatistik_' + cast(@x as varchar) +
       ''', COUNT(Filiale) FROM dbo.Verkaufsstatistik_' + cast(@x as varchar)
      insert into #tmp exec (@cmd)
      set @x = @x + 1
    end
    select * from #tmp
    drop table #tmp
    Habe es jetzt nicht getestet, aber probiere es mal, passieren kann ja nichts dabei

    bye,
    Helmut

    Comment


    • #3
      Wenn man denn schon MS-SQL 2005 oder höher benutzt, kann man auch einfach die dmv sys.dm_db_partition_stats abfragen....

      Comment


      • #4
        Vielen Dank für die rasche Antwort. Irgendwie ist etwas noch nicht ganz optimal

        Code:
        declare @x int, 
        @cmd varchar(200)
        create table #tmp (name varchar(200), anzahl int)
        
        set @x = 1
        while @x <= 200 begin
          set @cmd = 'SELECT '''dbo.B001_Benutzergruppe_Super_anlegen' + cast(@x as varchar) +
           ''', COUNT(USR02BNAME) FROM dbo.B001_Benutzergruppe_Super_anlegen' + cast(@x as varchar)
          insert into #tmp 
          
          exec (@cmd)
          set @x = @x + 1
        end
        select * from #tmp
        drop table #tmp
        Meldung 102, Ebene 15, Status 1, Zeile 8
        Falsche Syntax in der Nähe von ','.
        Meldung 105, Ebene 15, Status 1, Zeile 8
        Kein schließendes Anführungszeichen nach der Zeichenfolge ' + cast(@x as varchar)
        insert into #tmp

        exec (@cmd)
        set @x = @x + 1
        end
        select * from #tmp
        drop table #tmp
        '.

        Für Antwort bin ich super dankbar!

        Comment


        • #5
          Sorry, ein Hochkomma zuviel. Bitte diese Zeile so korrigieren:
          ...
          set @cmd = 'SELECT ''dbo.B001_Benutzergruppe_Super_anlegen' + cast(@x as varchar) +
          ...

          also nach dem Select nur zwei statt drei Hochkommas.

          bye,
          Helmut

          Comment


          • #6
            ganz herzlichen Dank!

            ich bin glücklich - es funktioniert!!! Das spart mir wieder 1 Stunde Lebenszeit pro Tag :-)

            habe auch noch das gefunden:

            SELECT sysobjects.name, sysindexes.[rows]
            FROM sysindexes INNER JOIN
            sysobjects ON sysindexes.id = sysobjects.id
            WHERE (sysindexes.indid < 2) AND (sysobjects.xtype = 'U')
            ORDER BY NAME

            Einen schönen Samstag an alle!!

            Comment


            • #7
              Und für alles, was man irgendwie über alle Tabellen einer Datenbank ziehen will, gibt es noch sp_msforeachtable (bzw. sp_msforeachdb für alle Datenbanken)

              bye,
              Helmut

              Comment


              • #8
                Thanks!

                Comment

                Working...
                X