SQL Beträge aus zwei Tabellen zusammenrechnen...

mischaef

Kassettenkind
Teammitglied
Registriert
Aug. 2012
Beiträge
6.151
Nabend zusammen,

ich habe hier ein Problem mit einer Datenbankabfrage, die dem Anschein nach meine Möglichkeiten übersteigt...

Ausgangspunkt ist folgende MySQLi-Abfrage:


SQL:
SELECT
    SUM(haushalt.haushalt_betrag) AS ausgaben_gesamt_bezahlmethoden,
    haushalt.haushalt_bezahlmethoden_id,
    bezahlmethoden.bezahlmethoden_id,
    bezahlmethoden.bezahlmethoden_name
FROM
    haushalt
INNER JOIN bezahlmethoden ON haushalt.haushalt_bezahlmethoden_id = bezahlmethoden.bezahlmethoden_id
WHERE haushalt_datum
        BETWEEN
            CAST(CONCAT(?, '-01') AS DATE)
        AND
            LAST_DAY(CAST(CONCAT(?, '-01') AS DATE))
GROUP BY
    bezahlmethoden.bezahlmethoden_name
ORDER BY
    bezahlmethoden.bezahlmethoden_name";

Es gibt eine Tabelle "haushalt" mit verschiedenen Einträgen, darunter auch haushalt_betrag. In der anderen Tabelle "bezahlmethoden" sind, wie der Name schon sagt, die Zahlungsmittel gespeichert (Bank, Bar, Kreditkarte, ect...), mit denen die Ausgaben getätigt wurden. Diese werden in der Tabelle "haushalt" unter "haushalt_bezahlmethoden_id" gespeichert.

Mit der DB-Abfrage oben sollen nun die Beträge innerhalb eines bestimmten Datums (bei mir der jeweilige Monat) den Zahlungsmitteln nach zusammengerechnet und ausgegeben werden. Das funktioniert bereits zuverlässig.

Jetzt gibt es aber noch eine dritte Tabelle "tanken", die im Grunde wie "haushalt" funktioniert: Die Zahlungsarten werden auch hier als ID unter tanken_zahlungsmethoden_id gespeichert.

Ich würde die Tabelle jetzt gerne in die obere Abfrage mit einfügen, so dass ich von den Tabellen "haushalt" und "tanken" alle Beträge nach den jeweiligen Zahlungsarten ausgegeben bekomme.

Ist das überhaupt möglich?

Besten dank schon mal

Michael
 
Warum wurde das aus Datenbanksicht überhaupt so gelöst?

Der Aufbau ist eigentlich aus ERM Sicht zumindest fragwürdig. Eigentlich handelt es sich bei beidem nämlich um eine Transaktion, welche ggf. eine Kategorie hat und sollten eigentlich in eine Transaktionstabelle geschrieben werden und über diese ggf. Kategorisiert. Dann hättest du das Thema mit dem Subselect so auch nicht.
 
  • Gefällt mir
Reaktionen: marcOcram, floq0r und Oelepoeto
Zurück
Oben