MySQL Abfrage funktioniert nicht
mixmastertobsi
- datenbank
0 suit0 mixmastertobsi0 suit
0 dedlfix0 mixmastertobsi0 suit
Hallo, wer kann mir sagen, was an folgender Abfrage nicht passt. Wenn ich diese Abfrage ausführe, passiert gar nichts.
SELECT * FROM auftrag_rechnung
JOIN auftrag ON auftrag.auftragnr=auftrag_rechnung.auftragnr
JOIN auftrag_mahnung ON auftrag_mahnung.auftragnr=auftrag.auftragnr AND auftrag_mahnung.mahnstufe='1'
WHERE
auftrag.gesamtpreis>(SELECT IF(SUM(betrag) IS NOT NULL, SUM(betrag), 0) FROM auftrag_zahlung WHERE auftrag_zahlung.auftragnr=auftrag_rechnung.auftragnr)
Hallo, wer kann mir sagen, was an folgender Abfrage nicht passt. Wenn ich diese Abfrage ausführe, passiert gar nichts.
Der Client sagt dir sicher warum - wenn du den Client selbst geschrieben hast, baue eine entsprechende Auswertungsroutine ein.
Hallo,
vielen Dank für die Antwort. Die Abfrage teste ich eigentlich im PHPMyAdmin. Wie soll ich solch ein Auswertungsroutine erstellen?!?
vielen Dank für die Antwort. Die Abfrage teste ich eigentlich im PHPMyAdmin. Wie soll ich solch ein Auswertungsroutine erstellen?!?
phpMyAdmin ist ein Client der bereits über entsprechende Auswertungs- oder Fehlerbehandlungsroutinen verfügt, die musst du nur lesen.
Hi!
Wenn ich diese Abfrage ausführe, passiert gar nichts.
Das ist sicher nicht der Fall, irgendwas passiert immer. Beobachte und beschreibe bitte genauer. War die Abfrage fehlerfrei und es kommt nur eine leere Ergebnismenge zurück, oder signalisierte die verwendete Query-Funktion über ihren Rückgabewert einen Fehler, oder ist es was ganz anderes?
Lo!
Also ich lasse die Abfrage 5 Minuten laufen und es passiert wirklich nichts. Er ladet und ladet und ladet und ladet.
Wenn ich die WHERE Formel weg lasse funktioniert das Skript
Also ich lasse die Abfrage 5 Minuten laufen und es passiert wirklich nichts. Er ladet und ladet und ladet und ladet.
Dann verwende ein vernünftiges Frontend dass dir auch sagt, was der SQL-Server grade tut. Workbench kann das z.B. unter Server Administration -> Connections. Da solltest du dann sehen was da grade ausgeführt wird und ob die Transaktion schon beendet wurde oder in alle Ewigkeit ausgeführt wird.
Ich stehe leider aufm schlauch. Keine Ahnung wo und wie ich da nachschaue.
Ich habe jetzt mal noch folgendes porbiert
geht nicht
SELECT * FROM auftrag_rechnung
INNER JOIN auftrag ON auftrag.auftragnr=auftrag_rechnung.auftragnr
INNER JOIN auftrag_mahnung ON auftrag_mahnung.auftragnr=auftrag.auftragnr
INNER JOIN auftrag_zahlung ON auftrag_zahlung.auftragnr=auftrag_rechnung.auftragnr
geht
SELECT * FROM auftrag_rechnung
INNER JOIN auftrag ON auftrag.auftragnr=auftrag_rechnung.auftragnr
INNER JOIN auftrag_zahlung ON auftrag_zahlung.auftragnr=auftrag_rechnung.auftragnr
Hi!
geht nicht
SELECT * FROM auftrag_rechnungINNER JOIN auftrag ON auftrag.auftragnr=auftrag_rechnung.auftragnr
INNER JOIN auftrag_mahnung ON auftrag_mahnung.auftragnr=auftrag.auftragnr
INNER JOIN auftrag_zahlung ON auftrag_zahlung.auftragnr=auftrag_rechnung.auftragnrgeht
SELECT * FROM auftrag_rechnungINNER JOIN auftrag ON auftrag.auftragnr=auftrag_rechnung.auftragnr
INNER JOIN auftrag_zahlung ON auftrag_zahlung.auftragnr=auftrag_rechnung.auftragnr
Du weißt, dass ein Inner Join ein kartesisches Produkt erzeugt, dass also jeder Datensatz mit jedem verknüpft wird? Wenn du 5 Datensätze in der einen und 6 in der anderen hast, kommen zumindest als Zwischenergebnis schon 30 Datensätze zusammen. Das wird nicht weniger, wenn du noch weitere Tabellen hinzunimmst. Versuch solche Monster zu vermeiden. Korrelierte Subquerys können Besserung bringen.
Lo!