MySQL Frage, Temporäre Tabellen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MySQL Frage, Temporäre Tabellen

    Ich habe folgendes MySQL Problem,
    vielleicht weiß jemand weiter:

    Ich benutze für eine SELECT Abfrage einer Tabelle eine Temporäre Tabelle in der ich die Zwischenergebnisse speicher um dann ein zweites SELECT auszuführen.

    (Dies ist leider notwendig, da ich zuerst ein GROUP bilden muss, um die Summe von bestimmten Beträgen zu bekommen, die auf die gleiche Spalte einer anderen Tabelle verweisen. Anhand der Summe erfolgt dann die Entscheidung, ob alle Zeilen einzelnen, also ohne GROUP ausgelesen werden. Vielleicht hat ja auch jemand eine andere Lösung?)

    Das Problem:
    Soweit in der Temporären Tabelle mehr als nur ein Datensatz steht, funktioniert alles, wenn nur ein Datensatz drin steht, erkennt die zweite Abfrage diesen Datensatz nicht.

    Und hier die Abfragen des PHP-Scripts:

    Die ersten Abfrage:

    $sql = " CREATE TEMPORARY TABLE IF NOT EXISTS Temp1 AS";
    $sql .= " SELECT fin_entries_deb.id as entry_id, fin_entries_deb.invoice_date, fin_entries_deb.total_amount AS amount, fin_entries_deb.info, SUM(fin_payments_deb.total_amount) AS paid FROM";
    $sql .= " fin_entries_deb";
    $sql .= " LEFT JOIN fin_payments_deb ON fin_payments_deb.entry_deb_id = fin_entries_deb.id";
    $sql .= " WHERE repeat='no'";
    $sql .= " && YEAR(fin_entries_deb.invoice_date) = ".$year." && MONTH(fin_entries_deb.invoice_date) = ".$month."";
    $sql .= " GROUP BY entry_id";
    $sql .= " HAVING paid IS NULL or paid < amount";

    Die zweite Abfrage:

    $sql2 = " SELECT Temp1.paid as temppaid, 'deb' AS entry, Temp1.entry_id, Temp1.invoice_date, fin_payments_deb.id AS pay_id, Temp1.amount, Temp1.info, fin_payments_deb.total_amount AS paid, payment_date, payment_month";
    $sql2 .= " FROM Temp1";
    $sql2 .= " LEFT JOIN fin_payments_deb ON fin_payments_deb.entry_deb_id = Temp1.entry_id";

    Vielen Dank für eure Hilfe,

    Ron

  • #2
    Bei kleinen Ergebnissen wäre eine Schleife vielleicht sinnvoller.

    Aber dein eigentliches Problem hat wahrscheinlich entweder mit den Daten oder deinem Auslesen zu tun; an den Queries alleine kann es eigentlich nicht liegen.

    Wenn in der Temp-Tabelle zu dem einen Eintrag (der nicht angezeigt wird) noch ein zweiter hinzukommt, taucht dann der erste auf? (Sprich: funktioniert wirklich alles, wenn mehr als ein Datensatz da ist?)
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar

    Lädt...
    X