Announcement

Collapse
No announcement yet.

Spalten addieren von unterschiedlichen Tabellen

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

  • Spalten addieren von unterschiedlichen Tabellen

    Hallo, ich habe mehrer Werte in mehreren Tabellen die ich nun gerne addieren würde. Ich habe nun eine View geschrieben die eigentlich dieses tun sollte, es aber wohl nicht macht, da einige Werte Zeitweise "NULL" sind. Das wollte ich mithilfe von IFNULL umgehen, das haut aber nicht hin.Nehme ich alle Werte raus die NULL sind klappt es, diese möchte ich allerdings weiter drin behalten. Meine View sieht wie folgt aus:
    SELECT 1 AS ID,
    IFNULL(Tabelle1.Wert1, 0)
    + IFNULL(Tabelle2.Wert2, 0)
    + IFNULL(Tabelle3.Wert3, 0)
    + IFNULL(Tabelle4.Wert4, 0)
    + IFNULL(Tabelle5.Wert5, 0)
    + IFNULL(Tabelle6.Wert6, 0)
    + IFNULL(Tabelle7.Wert7, 0)
    + IFNULL(Tabelle8.Wert8, 0)
    + IFNULL(Tabelle9.Wert9, 0) AS Summe
    FROM Tabelle1 CROSS JOIN
    Tabelle2 CROSS JOIN
    Tabelle3 CROSS JOIN
    Tabelle4 CROSS JOIN
    Tabelle5 CROSS JOIN
    Tabelle6 CROSS JOIN
    Tabelle7 CROSS JOIN
    Tabelle8 CROSS JOIN
    Tabelle9 CROSS JOIN

    Vielleicht könnt ihr mir ja weiterhelfen, wäre super

    Besten Dank Matze

  • #2
    Hallo Matze,

    ISNULL(Feld, 0) nicht IFNULL
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment


    • #3
      Würde bestimmt funzen, nur leider ist das bei mir keine integrierte Funktion, wird mir zumindest gesagt wenn ich das ändere

      Comment


      • #4
        habs jetzt auf ISNULL umgeändert, kommt aber trotzdem nicht raus....,mir wird noch nichtmal NULL als Ergebnis ausgegeben sondern einfach gar nichts...
        Liegts vielleicht an CROSS JOIN??Wollte es mal mit UNION probieren aber das haut auch nicht hin

        Comment


        • #5
          ???
          Einer von uns beiden ist im falschen Film.

          ISNULL ist eine Standard-Funktion vom MS Sql Server, IFNULL hingegen nicht; das gibt es z.B. bei MySql.
          Olaf Helper

          <Blog> <Xing>
          * cogito ergo sum * errare humanum est * quote erat demonstrandum *
          Wenn ich denke, ist das ein Fehler und das beweise ich täglich

          Comment


          • #6
            Mit ISNULL klappt es jetzt ja auch, zumindest die zu verwenden, aber das ergebniss ist trotzdem das gleiche, nämlich einfeich kein ergebniss

            Comment


            • #7
              Dann wird es daran liegen, das min. ein der Tabellen leer ist.

              [highlight=SQL]CREATE TABLE #Tab1 (Wert1 int);
              CREATE TABLE #Tab2 (Wert2 int);
              CREATE TABLE #Tab3 (Wert3 int);

              INSERT INTO #Tab1 VALUES (1);
              INSERT INTO #Tab1 VALUES (2);
              INSERT INTO #Tab1 VALUES (NULL);

              INSERT INTO #Tab2 VALUES (1);
              INSERT INTO #Tab2 VALUES (2);
              INSERT INTO #Tab2 VALUES (NULL);

              -- Leer
              SELECT ISNULL(Wert1, 0) + ISNULL(Wert2, 0) + ISNULL(Wert3, 0) AS Gesamt
              FROM #Tab1
              CROSS JOIN #Tab2
              CROSS JOIN #Tab3

              INSERT INTO #Tab3 VALUES (1);
              -- Geht
              SELECT ISNULL(Wert1, 0) + ISNULL(Wert2, 0) + ISNULL(Wert3, 0) AS Gesamt
              FROM #Tab1
              CROSS JOIN #Tab2
              CROSS JOIN #Tab3
              GO
              DROP TABLE #Tab1
              DROP TABLE #Tab2
              DROP TABLE #Tab3[/highlight]

              Ergebnis:[highlight=code]Gesamt
              -----------

              (0 Zeile(n) betroffen)

              Gesamt
              -----------
              3
              4
              2
              4
              5
              3
              2
              3
              1

              (9 Zeile(n) betroffen)
              [/highlight]
              Olaf Helper

              <Blog> <Xing>
              * cogito ergo sum * errare humanum est * quote erat demonstrandum *
              Wenn ich denke, ist das ein Fehler und das beweise ich täglich

              Comment


              • #8
                Das ist mit Sicherheit richtig das einige Tabellen zeitweise leer sind. Kann ich das denn nicht irgendwie umgehen, dass ich denn beispielsweise 0 addiere wenn die Tabellen leer sind??Meine Tabellen werden nämlich über einen bestimmten Zeitbereicht abgefragt, für den nicht immer ein Wert geliefert wird. Für die Summation ist es aber trotzdem notwendig, dass ich auch diese Tabellen berücksichtige, da es hin und wieder mal vorkommt, dass diese mit Leben gefüllt werden.

                Danke Matze

                Comment


                • #9
                  Bei LEFT JOIN darf die "rechte" Tabelle leer sein.
                  Da muss man eine JOIN Bedingung angeben; aber ich kenne Deine Tabellen nicht.
                  Olaf Helper

                  <Blog> <Xing>
                  * cogito ergo sum * errare humanum est * quote erat demonstrandum *
                  Wenn ich denke, ist das ein Fehler und das beweise ich täglich

                  Comment

                  Working...
                  X