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
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
Kommentar