none
SQL - Abfrage über 2 Tabellen RRS feed

  • Frage

  • Hallo zusammen,

    habe folgendes SQL - Statement:

    SQL_Befehl = "SELECT Kontonummer, SUM(Netto) AS Netto_Konto, Kundennummer FROM Rechnungspool " _

                     & "WHERE Lfd_Nr = " & RS_Rechnungssaetze![Lfd_Nr] & " GROUP BY Kontonummer, Kundennummer"

    Wie muss ich den SQL-Befehl erweitern damit gleichzeitig die Bezeichnung der Kontonummer aus einer zweiten Tabelle (Tabelle Sachkonten, Feld Kontoname) gelesen wird?

    Warum muss in  GROUP BY denn die Kundennummer rein? Die Sätze sollen nur nach der Kontonummer gruppiert werden - spielt aber weiter keine Rolle da die Kundennummer für die gelesenen Sätze immer die gleiche ist.

    Vielen Dank für eine Hilfe.

    Gruß

    Montag, 20. Juli 2015 12:23

Antworten

  • Hallo Adam,

    sobald in einer Abfrage eine Ergebnisspalte mit einer Aggregation versehen ist (in Deinem Fall die SUM()-Funktion) müssen auch alle anderen Ergebnisspalten mit einer Aggregation versehen werden (meistens GROUP BY, aber auch MAX(), MIN(), usw.).

    Umgehen könnte man das mit einer Unterabfrage, auch wenn es für Deinen spezifischen Fall nicht notwendig/sinnvoll ist.

    Besten Gruß

    Dienstag, 21. Juli 2015 07:34

Alle Antworten

  • Hallo Adam

    Um die zweite Tabelle mit abzufragen einfach wie folgt erweitern

    SELECT RP.Kontonummer, SUM(RP.Netto) AS Netto_Konto, RP.Kundennummer, SA.Kontoname
    FROM Rechnungspool as RP, Sachkonten as SA
    WHERE Lfd_Nr = " & RS_Rechnungssaetze![Lfd_Nr] and  RP.Kundennummer = SA.Kundennummer


    Benjamin Hoch
    MCSE: Data Platform,
    MCSA: Windows Server 2012,


    Montag, 20. Juli 2015 13:29
  • Hallo Benjamin,

    habe Folgendes versucht:

    SQL_Befehl = "SELECT RP.Kontonummer, SUM(RP.Netto) AS Netto_Konto, RP.Kundennummer, SA.Kontoname " & _

                       "FROM Rechnungspool as RP, Sachkonten as SA " & _

                       "WHERE Lfd_Nr = " & RS_Rechnungssaetze![Lfd_Nr] & " AND  RP.Kontonummer = SA.Kontonummer"

    (Bezeichnung der Kontonummer wird zusätzlich gesucht)

    Bekomme aber den Fehler:

    You tried to execute a query that does not include the specified expression ‘kontonummer’ as part of an aggregate function.

    Es funktioniert mit:

    SQL_Befehl = "SELECT Sachkonten.Kontonummer, Kontoname, SUM(Netto) AS Netto_Konto, Kundennummer     FROM Sachkonten, Rechnungspool " _

                     & "WHERE Sachkonten.Kontonummer = Rechnungspool.Kontonummer " _

                   & "AND Lfd_Nr = " & RS_Rechnungssaetze![Lfd_Nr] & " GROUP BY Sachkonten.Kontonummer, Kontoname, Kundennummer"

    Verstehe nur nicht warum in GROUP BY auch Kontoname und Kundennummer stehen müssen.

    Gruß

    Adam

    Dienstag, 21. Juli 2015 06:57
  • Hallo Adam,

    sobald in einer Abfrage eine Ergebnisspalte mit einer Aggregation versehen ist (in Deinem Fall die SUM()-Funktion) müssen auch alle anderen Ergebnisspalten mit einer Aggregation versehen werden (meistens GROUP BY, aber auch MAX(), MIN(), usw.).

    Umgehen könnte man das mit einer Unterabfrage, auch wenn es für Deinen spezifischen Fall nicht notwendig/sinnvoll ist.

    Besten Gruß

    Dienstag, 21. Juli 2015 07:34