Announcement

Collapse
No announcement yet.

Problem mit SELECT-Abfrage

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

  • Problem mit SELECT-Abfrage

    Hey zusammen!

    Ich hoffe ihr könnt mir irgendwie weiterhelfen... und zwar hab ich folgendes Problem:

    wie in der angehängten Tabelle (Siehe Bild) hab ich in Access ne Tabelle erstellt mit den entsprechenden Spalten.
    Ich würde jetzt gerne eine Abfrage durchführen, die die Einträge in der Spalte "konto-nr-soll" mit dem entsprechenden Betrag in der Spalte "betrag-soll" aufsummiert (also überall da, wo die Konto-Nummern gleich sind, wie hier z.B. "0510" mit 2 Einträgen)
    genau dasselbe soll in der Spalte "konto-nr-haben" + "betrag-haben" passieren...also aufsummieren...und dann...
    Sollen die Beiden Summen voneinander abgezogen werden und ausgegeben werden z.B. "AS Saldo" oder so ähnlich

    Wäre echt super, wenn mir da jemand von euch helfen könnte...steh momentan echt irgendwie aufm Schlauch und komme nicht weiter

    Ich sag schonmal vielen Dank im Voraus

    Gruß
    Zuletzt editiert von Lobo4; 18.04.2009, 13:06.

  • #2
    Hallo,

    So in etwa koennte deine Abfrage ausschauen:

    Code:
    SELECT ktonr, SUM(soll) AS soll, SUM(haben) AS haben FROM
    (
    SELECT [konto-nr-soll] AS ktonr, SUM([betrag-soll]) AS soll, CAST(0 AS float) AS haben
    FROM ktable GROUP BY [konto-nr-soll]
    UNION ALL
    SELECT [konto-nr-haben] AS ktonr, CAST(0 AS float) AS soll, SUM([betrag-haben]) AS haben
    FROM ktable GROUP BY [konto-nr-haben]
    ) a 
    GROUP BY a.ktonr ORDER BY a.ktonr
    Ist zwar SQL-Server Code, aber gross duerften die Unterschiede zu Access nicht sein.
    *-- robert.oh. --*

    Comment


    • #3
      Hey...danke für die schnelle Antwort

      aber könntest du das vielleicht auch in einen Access-Code übersetzen...also der funktioniert nämlich nicht...

      würde ihn gerne an Access anpassen, aber ich steig da irgendwie überhaupt nicht durch deinen Code durch ...sorry

      Bin eigentlich noch relativ weit am Anfang was SQL-Abfragen angeht ...hab ich bisher auch noch nicht gesehen, dass man 2 SELECT abfragen ineinander verschachteln kann...aber man lernt ja nie aus

      Danke

      Comment


      • #4
        Hallo Lobo4,

        nach ordnungsgemäßer doppelter Buchführung sieht das aber nicht gerade aus ...

        [highlight=code]SELECT Kto, SUM(Haben) AS SumHaben, SUM(Soll) AS SumSoll
        FROM (SELECT [konto-nr-haben] AS Kto , [betrag-haben] AS Haben, 0 AS Soll
        FROM ktable
        UNION ALL
        SELECT [konto-nr-soll] AS Kto, 0 AS Haben, [betrag-soll] AS Soll
        FROM ktable) AS Sub
        GROUP BY Kto
        [/highlight]

        Tipp: Keine Sonderzeichen wie - in Objekt-Bezeichnungen. Lässt Du mal die eckigen Klammern weg, wird es gleich als Subtraktion von zwei unbekannten Ausdrücken gewertet.
        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


        • #5
          Was bei der Abfrage verwendet wurde, nennst sich "Inside-View", es wird also eine Abfrage also Basis für eine Abfrage verwendet.
          In dem Fall hatte ich in der inner Abfrage bei den Feldern ein Alias "Haben" für "haben-betrag" vergeben, dito für Soll.
          In der äußeren Abfrage musst Du dann wieder die Alias verwenden, also

          SUM(haben_betrag) => SUM(Haben)

          Diese Parameterabfrage kommt immer, wenn etwas verwendet wird, das weder ein Feldname noch eine bekannte Funktion ist.
          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
            Hallo,

            die Sache mit dem 'Parameter' wird vom '_' verursacht. Im SQL Server muss man solche Spalten- / Tabellen-Namen in '[...]' einschliessen, damit sie akzeptiert werden.

            Wie schon vorher erwaehnt, weiss ich nicht genau wie du das im Access angeben musst, ' " [] () ... waeren da so Moeglichkeiten, die mir auf die Schnelle einfallen.
            *-- robert.oh. --*

            Comment


            • #7
              Hey...wow es funktioniert...super vielen vielen Dank
              genua danach hab ich gesucht!!!

              Noch eine letzte Frage...dann nerv ich auch nicht mehr mit dem Problem

              Kann ich jetzt meine WHERE-Klausel da auch irgendwo einbauen ??
              Also WHERE sollkonto LIKE"0*" ... WHERE habenkonto LIKE"0*"???

              Danke nochmal

              Comment


              • #8
                Die Fehlermeldung ist etwas irreführend. Das Problem ist
                AS Gesamt, SUM(Gesamt) AS Saldo
                Du kannst Dich im Select nicht auf ein Alias aus dem Select beziehen.

                Allerdings verstehe ich noch nicht, was genau Du erreichen willst, soll es eine Gesamtsumme über alles werden?
                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


                • #9
                  Hey!
                  Ja genau...so ne Art Gesamtsumme über alles

                  Comment


                  • #10
                    Hatte ich schon befürchtet; zum Errechnen des prozentualen Anteil am Gesamtumsatz, gelle?
                    Geht, aber mute Access nicht zuviel zu, es ist nur eine "Mini-Datenbank".
                    Dazu ist eine weitere Unterabfrage nötig, sieht so aus.

                    [highlight=SQL]SELECT Kto, SUM(Haben) AS SumHaben, SUM(Soll) AS SumSoll,
                    SUM(haben) - SUM(Soll) AS Gesamt,
                    (SELECT SUM(haben_betrag)
                    FROM buchungen
                    WHERE habenkonto LIKE "0*")
                    -
                    (SELECT SUM(soll_betrag )
                    FROM buchungen
                    WHERE sollkonto LIKE "0*") AS Total
                    FROM (SELECT habenkonto AS Kto , haben_betrag AS Haben, 0 AS Soll
                    FROM buchungen
                    WHERE habenkonto LIKE "0*"
                    UNION ALL
                    SELECT sollkonto AS Kto, 0 AS Haben, soll_betrag AS Soll
                    FROM buchungen
                    WHERE sollkonto LIKE "0*") AS Sub
                    GROUP BY Kto[/highlight]

                    BTW, zur Optimierung habe ich das WHERE in das innere Select gezogen; je weniger Datensätze von Anfang an selektiert werden, um so schneller läuft es.
                    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