+ Antworten
Ergebnis 1 bis 5 von 5

Thema: Zwei MySQL Tabellen Summen addieren bzw. subtrahieren

  1. #1
    War schon öfter hier
    Registriert seit
    22.03.2008
    Beiträge
    164
    Bedankte sich
    17
    1 Danksagung in 1 Beitrag

    Standard Zwei MySQL Tabellen Summen addieren bzw. subtrahieren

    Hallo, ich habe in meiner Datenbank 2 Tabellen. Die Summenwerte der einzelnen Tabellen kann ich errechnen. Aber wie kann ich zum Beispiel die Summe von Tabelle A mit Summe von Tabelle B addieren bzw auch subtrahieren?

    Hier ist zum Beispiel meine Tabelle A, so frage ich die Summe ab:

    <?php
    // Verbindung zur Datenbank
    $db = JFactory::getDbo();
    // Query definieren
    $query = $db->getQuery(true);
    //Query zusammenstellen
    $query->select($db->quoteName(array('fahrername', 'buchungskonto', 'verwendungszweck','betrag')));
    $query->from($db->quoteName('#__chronoforms_data_Einnahmen2016')) ;
    // where Bedingung zusammenbauen
    // $query->where($db->quoteName('fahrername') . ' = ' . $db->quote('Karl'));
    //$query->where($db->quoteName('buchungskonto') . ' = ' . $db->quote('Gebühr'));
    //zum Test die Query anzeigen
    //Abfrage ausführen
    $db->setQuery($query);
    $rows = $db->loadObjectList();
    //Test ob Daten vorhanden sind
    if ($rows)
    {
    // nur Test
    // Anzeige der Daten in Tabelle
    echo "<table style='width: 100%' border='1'>";
    //hierTabellenüberschrift nur wenn gewünscht
    $summe = 0;
    //Datenbankeinträge je Zeile anzeigen
    foreach ($rows as $row)
    // Felder $row-><$feldname> holen
    {
    //echo "<tr>"; //Zeilenbegin
    // Inhalt Felder
    //echo "<td>". $row->name . "</td>"; // Tabellenfeld
    //echo "<td>". $row->buchungskonto . "</td>"; // Tabellenfeld
    //echo "<td>". $row->verwendungszweck . "</td>"; // Tabellenfeld
    //echo "<td align="right">". number_format($row->betrag,2, ",", "."). "</td>"; // Tabellenfeld
    //echo "</tr>"; //Zeilenende
    $summe = $summe + $row->betrag;
    } //Ende foreach rows
    // Summenzeile
    echo "<tr>"; //Zeilenbegin
    // Inhalte
    //echo "<td>". " " . "</td>"; // Tabellenfeld
    //echo "<td>". " " . "</td>"; // Tabellenfeld
    echo "<td>". "Gesamt". "</td>"; // Tabellenfeld
    echo "<td align='right'>". number_format($summe,2, ",", "."). "</td>"; // Tabellenfeld
    echo "</tr>"; //Zeilenende
    //Tabellenende
    echo "</table>";
    }

    und hier die Tabelle B

    <?php
    // Verbindung zur Datenbank
    $db = JFactory::getDbo();
    // Query definieren
    $query = $db->getQuery(true);
    //Query zusammenstellen
    $query->select($db->quoteName(array('fahrername', 'buchungskonto', 'verwendungszweck','betrag')));
    $query->from($db->quoteName('#__chronoforms_data_Ausgaben2016'));
    // where Bedingung zusammenbauen
    // $query->where($db->quoteName('fahrername') . ' = ' . $db->quote('Karl'));
    //$query->where($db->quoteName('buchungskonto') . ' = ' . $db->quote('Gebühr'));
    //zum Test die Query anzeigen
    //Abfrage ausführen
    $db->setQuery($query);
    $rows = $db->loadObjectList();
    //Test ob Daten vorhanden sind
    if ($rows)
    {
    // nur Test
    // Anzeige der Daten in Tabelle
    echo "<table style='width: 100%' border='1'>";
    //hierTabellenüberschrift nur wenn gewünscht
    $summe = 0;
    //Datenbankeinträge je Zeile anzeigen
    foreach ($rows as $row)
    // Felder $row-><$feldname> holen
    {
    //echo "<tr>"; //Zeilenbegin
    // Inhalt Felder
    //echo "<td>". $row->fahrername . "</td>"; // Tabellenfeld
    //echo "<td>". $row->buchungskonto . "</td>"; // Tabellenfeld
    //echo "<td>". $row->verwendungszweck . "</td>"; // Tabellenfeld
    //echo "<td align="right">". number_format($row->betrag,2, ",", "."). "</td>"; // Tabellenfeld
    //echo "</tr>"; //Zeilenende
    $summe = $summe + $row->betrag;
    } //Ende foreach rows
    // Summenzeile
    echo "<tr>"; //Zeilenbegin
    // Inhalte
    //echo "<td>". " " . "</td>"; // Tabellenfeld
    //echo "<td>". " " . "</td>"; // Tabellenfeld
    echo "<td>". "Gesamt". "</td>"; // Tabellenfeld
    echo "<td align='right'>". number_format($summe,2, ",", "."). "</td>"; // Tabellenfeld
    echo "</tr>"; //Zeilenende
    //Tabellenende
    echo "</table>";
    }
    else
    { echo "Gesamtbetrag - Keine Daten ermittelt";}
    // nur Test
    ?>
    else
    { echo "Gesamtbetrag - Keine Daten ermittelt";}
    // nur Test
    ?>

    Also wie bekomme ich beide Tabellengesamtbeträge addiert, wie bekomme ich beide Tabellengesamtbeträge subtrahiert.

    Ich habe gegoogelt und mit qualmt der Schädel. Vielleicht weiss einer von Euch Rat

    Danke

  2. #2
    Gehört zum Inventar Avatar von Re:Later
    Registriert seit
    21.04.2014
    Ort
    Berlin
    Beiträge
    5.795
    Bedankte sich
    156
    Erhielt 2.255 Danksagungen
    in 2.022 Beiträgen

    Standard

    So nicht lesbar.
    Pack doch bitte den Code in einen CODE-Block. Erweiterter Editor. Findste einen Button für.

  3. #3
    War schon öfter hier
    Registriert seit
    22.03.2008
    Beiträge
    164
    Bedankte sich
    17
    1 Danksagung in 1 Beitrag

    Standard Zwei MySQL Tabellen Summen addieren bzw. subtrahieren

    Hier ist es noch einmal neu mit dem Code richtig eingegeben.


    Zitat Zitat von downhillmaxe Beitrag anzeigen
    Hallo, ich habe in meiner Datenbank 2 Tabellen. Die Summenwerte der einzelnen Tabellen kann ich errechnen. Aber wie kann ich zum Beispiel die Summe von Tabelle A mit Summe von Tabelle B addieren bzw auch subtrahieren?

    Hier ist zum Beispiel meine Tabelle A, so frage ich die Summe ab:

    Code:
    <?php
    // Verbindung zur Datenbank
    $db = JFactory::getDbo();
    // Query definieren
    $query = $db->getQuery(true);
    //Query zusammenstellen
    $query->select($db->quoteName(array('fahrername', 'buchungskonto', 'verwendungszweck','betrag')));
    $query->from($db->quoteName('#__chronoforms_data_Einnahmen2016'));
    // where Bedingung zusammenbauen
    // $query->where($db->quoteName('fahrername') . ' = ' . $db->quote('Karl'));
    //$query->where($db->quoteName('buchungskonto') . ' = ' . $db->quote('Gebühr'));
    //zum Test die Query anzeigen
    //Abfrage ausführen
    $db->setQuery($query);
    $rows = $db->loadObjectList();
    //Test ob Daten vorhanden sind
    if ($rows)
    {
    // nur Test
    // Anzeige der Daten in Tabelle
    echo "<table style='width: 100%' border='1'>";
    //hierTabellenüberschrift nur wenn gewünscht
    $summe = 0;
    //Datenbankeinträge je Zeile anzeigen
    foreach ($rows as $row)
    // Felder $row-><$feldname> holen
    {
    //echo "<tr>"; //Zeilenbegin
    // Inhalt Felder
    //echo "<td>". $row->name . "</td>"; // Tabellenfeld
    //echo "<td>". $row->buchungskonto . "</td>"; // Tabellenfeld
    //echo "<td>". $row->verwendungszweck . "</td>"; // Tabellenfeld
    //echo "<td align="right">". number_format($row->betrag,2, ",", "."). "</td>"; // Tabellenfeld
    //echo "</tr>"; //Zeilenende
    $summe = $summe + $row->betrag;
    } //Ende foreach rows
    // Summenzeile
    echo "<tr>"; //Zeilenbegin
    // Inhalte
    //echo "<td>". " " . "</td>"; // Tabellenfeld
    //echo "<td>". " " . "</td>"; // Tabellenfeld
    echo "<td>". "Gesamt". "</td>"; // Tabellenfeld
    echo "<td align='right'>". number_format($summe,2, ",", "."). "</td>"; // Tabellenfeld
    echo "</tr>"; //Zeilenende
    //Tabellenende
    echo "</table>";
    }
    und hier die Tabelle B

    Code:
    <?php
    // Verbindung zur Datenbank
    $db = JFactory::getDbo();
    // Query definieren
    $query = $db->getQuery(true);
    //Query zusammenstellen
    $query->select($db->quoteName(array('fahrername', 'buchungskonto', 'verwendungszweck','betrag')));
    $query->from($db->quoteName('#__chronoforms_data_Ausgaben2016'));
    // where Bedingung zusammenbauen
    // $query->where($db->quoteName('fahrername') . ' = ' . $db->quote('Karl'));
    //$query->where($db->quoteName('buchungskonto') . ' = ' . $db->quote('Gebühr'));
    //zum Test die Query anzeigen
    //Abfrage ausführen
    $db->setQuery($query);
    $rows = $db->loadObjectList();
    //Test ob Daten vorhanden sind
    if ($rows)
    {
    // nur Test
    // Anzeige der Daten in Tabelle
    echo "<table style='width: 100%' border='1'>";
    //hierTabellenüberschrift nur wenn gewünscht
    $summe = 0;
    //Datenbankeinträge je Zeile anzeigen
    foreach ($rows as $row)
    // Felder $row-><$feldname> holen
    {
    //echo "<tr>"; //Zeilenbegin
    // Inhalt Felder
    //echo "<td>". $row->fahrername . "</td>"; // Tabellenfeld
    //echo "<td>". $row->buchungskonto . "</td>"; // Tabellenfeld
    //echo "<td>". $row->verwendungszweck . "</td>"; // Tabellenfeld
    //echo "<td align="right">". number_format($row->betrag,2, ",", "."). "</td>"; // Tabellenfeld
    //echo "</tr>"; //Zeilenende
    $summe = $summe + $row->betrag;
    } //Ende foreach rows
    // Summenzeile
    echo "<tr>"; //Zeilenbegin
    // Inhalte
    //echo "<td>". " " . "</td>"; // Tabellenfeld
    //echo "<td>". " " . "</td>"; // Tabellenfeld
    echo "<td>". "Gesamt". "</td>"; // Tabellenfeld
    echo "<td align='right'>". number_format($summe,2, ",", "."). "</td>"; // Tabellenfeld
    echo "</tr>"; //Zeilenende
    //Tabellenende
    echo "</table>";
    }
    else
    { echo "Gesamtbetrag - Keine Daten ermittelt";}
    // nur Test
    ?>
    else
    { echo "Gesamtbetrag - Keine Daten ermittelt";}
    // nur Test
    ?>
    Also wie bekomme ich beide Tabellengesamtbeträge addiert, wie bekomme ich beide Tabellengesamtbeträge subtrahiert.

    Ich habe gegoogelt und mit qualmt der Schädel. Vielleicht weiss einer von Euch Rat

    Danke

  4. #4
    Gehört zum Inventar
    Registriert seit
    17.09.2008
    Ort
    München
    Beiträge
    7.848
    Bedankte sich
    761
    Erhielt 2.545 Danksagungen
    in 2.210 Beiträgen

    Standard

    Re:Later hat einen php codeblock gemeint.

    Sowas:
    PHP-Code:
    $db JFactory::getDbo();
    $query $db->getQuery(true);

    $query->select($db->quoteName(array('fahrername''buchungskonto''verwendungszweck','betrag')));
    $query->from($db->quoteName('#__chronoforms_data_Einnahmen2016'));

    $db->setQuery($query);
    $rows $db->loadObjectList();
    [ ...]
    $summe $summe $row->betrag
    Wenn ich deine Frage richtig verstehe wäre dein Problem doch gelöst, wenn du deine Summen anders benennst?

    Beim ersten:
    $einnahmen = $einnahmen + $row->betrag;

    und beim zweiten:
    $ausgaben = $ausgaben + $row->betrag;

    und dann
    $gesamt = $einnahmen - $ausgaben ...
    Geändert von firstlady (25.05.2016 um 08:26 Uhr)

  5. #5
    War schon öfter hier
    Registriert seit
    22.03.2008
    Beiträge
    164
    Bedankte sich
    17
    1 Danksagung in 1 Beitrag

    Standard

    @firstlady........Ich habe es jetzt so gemacht. Es wird alles richtig angezeigt. Summe Einnahmen, Summe Ausgaben. Und Summe von Einnahmen unsd Ausgaben. Ich finde aber den Fehler nicht, es verrechnet sich um einen Betrag von 2000 Euro

    PHP-Code:
    <?php
    // Verbindung zur Datenbank
    $db JFactory::getDbo();
    // Query definieren
    $query $db->getQuery(true);
    //Query zusammenstellen
    $query->select($db->quoteName(array('betrag')));
    $query->from($db->quoteName('#__chronoforms_data_Ausgaben2016'));


    // where Bedingung zusammenbauen

    //zum Test die Query anzeigen
    //Abfrage ausführen
    $db->setQuery($query);
    $rows $db->loadObjectList();
    //Test ob Daten vorhanden sind
    if ($rows)
    {
    // nur Test
    // Anzeige der Daten in Tabelle
    echo "<table style='width: 100%' border='1'>";
    //hierTabellenüberschrift nur wenn gewünscht
    $summe 0;
    //Datenbankeinträge je Zeile anzeigen
    foreach ($rows as $row)
    // Felder $row-><$feldname> holen
    {
    //echo "<tr>"; //Zeilenbegin
    // Inhalt Felder

    //echo "<td align="right">". number_format($row->betrag,2, ",", "."). "</td>"; // Tabellenfeld
    //echo "</tr>"; //Zeilenende
    $einnahmen $einnahmen $row->betrag;


    //Ende foreach rows
    // Summenzeile
    echo "<tr>"//Zeilenbegin
    // Inhalte
    //echo "<td>". " " . "</td>"; // Tabellenfeld
    //echo "<td>". " " . "</td>"; // Tabellenfeld
    echo "<td>""Gesamtausgaben aller Teamfahrer 2016 incl. Teamchef""</td>"// Tabellenfeld
    echo "<td align='right'>"number_format($einnahmen,2",""."). "</td>"// Tabellenfeld
    echo "</tr>"//Zeilenende
    //Tabellenende
    echo "</table>";
    }
    else
    { echo 
    "Gesamtbetrag - Keine Daten ermittelt";}
    // nur Test

    // Verbindung zur Datenbank
    $db JFactory::getDbo();
    // Query definieren
    $query $db->getQuery(true);
    //Query zusammenstellen
    $query->select($db->quoteName(array('betrag')));
    $query->from($db->quoteName('#__chronoforms_data_Einnahmen2016'));
    // where Bedingung zusammenbauen

    //zum Test die Query anzeigen
    //Abfrage ausführen
    $db->setQuery($query);
    $rows $db->loadObjectList();
    //Test ob Daten vorhanden sind
    if ($rows)
    {
    // nur Test
    // Anzeige der Daten in Tabelle
    echo "<table style='width: 100%' border='1'>";
    //hierTabellenüberschrift nur wenn gewünscht
    $summe 0;
    //Datenbankeinträge je Zeile anzeigen
    foreach ($rows as $row)
    // Felder $row-><$feldname> holen
    {
    //echo "<tr>"; //Zeilenbegin
    // Inhalt Felder

    //echo "<td align="right">". number_format($row->betrag,2, ",", "."). "</td>"; // Tabellenfeld
    //echo "</tr>"; //Zeilenende
    $ausgaben $ausgaben $row->betrag;
    //Ende foreach rows
    // Summenzeile
    echo "<tr>"//Zeilenbegin
    // Inhalte
    //echo "<td>". " " . "</td>"; // Tabellenfeld
    //echo "<td>". " " . "</td>"; // Tabellenfeld
    echo "<td>""Gesamtausgaben aller Teamfahrer 2016 incl. Teamchef""</td>"// Tabellenfeld
    echo "<td align='right'>"number_format($ausgaben,2",""."). "</td>"// Tabellenfeld
    echo "</tr>"//Zeilenende
    //Tabellenende
    echo "</table>";
    }
    else
    { echo 
    "Gesamtbetrag - Keine Daten ermittelt";}
    // nur Test

    //zum Test die Query anzeigen
    //Abfrage ausführen
    $db->setQuery($query);
    $rows $db->loadObjectList();
    //Test ob Daten vorhanden sind
    if ($rows)
    {
    // nur Test
    // Anzeige der Daten in Tabelle
    echo "<table style='width: 100%' border='1'>";
    //hierTabellenüberschrift nur wenn gewünscht
    $summe 0;
    //Datenbankeinträge je Zeile anzeigen
    foreach ($rows as $row)
    // Felder $row-><$feldname> holen
    {
    //echo "<tr>"; //Zeilenbegin
    // Inhalt Felder

    //echo "<td align="right">". number_format($row->betrag,2, ",", "."). "</td>"; // Tabellenfeld
    //echo "</tr>"; //Zeilenende
    $summe $einnahmen $ausgaben $row->betrag;
    //Ende foreach rows
    // Summenzeile
    echo "<tr>"//Zeilenbegin
    // Inhalte
    //echo "<td>". " " . "</td>"; // Tabellenfeld
    //echo "<td>". " " . "</td>"; // Tabellenfeld
    echo "<td>""Gesamtausgaben aller Teamfahrer 2016 incl. Teamchef""</td>"// Tabellenfeld
    echo "<td align='right'>"number_format($summe,2",""."). "</td>"// Tabellenfeld
    echo "</tr>"//Zeilenende
    //Tabellenende
    echo "</table>";
    }
    else
    { echo 
    "Gesamtbetrag - Keine Daten ermittelt";}
    // nur Test


    ?>
    Wenn ich deine Frage richtig verstehe wäre dein Problem doch gelöst, wenn du deine Summen anders benennst?

    Beim ersten:
    $einnahmen = $einnahmen + $row->betrag;

    und beim zweiten:
    $ausgaben = $ausgaben + $row->betrag;

    und dann
    $gesamt = $einnahmen - $ausgaben ...[/QUOTE]

+ Antworten

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein