Ich versuche, eine if else-Bedingung in dieser Select-Anweisung zu haben. Ich übergebe entweder eine customerID
oder eine accountID
in diesen Mapper und so muss ich überprüfen, welche übergeben wird. Ich hatte den ersten Fall, wo es keine customerId
(also accountId
wurde übergeben), und so die innere Verbindung durchgeführt wird. Die zweite ist, wenn es keine accountID
(also customerId
wurde bestanden). Dann, am Ende der Fälle, möchte ich es nach absteigenden Daten sortieren.SQL-Syntaxfehler bei der Verwendung von Fällen in einem SELECT
SELECT i.invoice_id, i.account_id, total_amount_due, due_date, bp.eff_date, bp.end_date, total_amount_due
(
CASE
WHEN customerId = null
THEN INNER JOIN server.bill_periods bp ON bp.invoice_id = i.invoice_id
WHERE account_id=#{accountId}
ELSE INNER JOIN server.bill_periods bp ON bp.invoice_id = i.invoice_id
INNER JOIN server.cust_acct_rel car ON car.account_id = i.account_id
WHERE car.customer_id=#{customerId}
END)
ORDER BY end_date DESC
Allerdings, wenn ich dies ausführen, bekomme ich diesen Fehler.
org.apache.ibatis.exceptions.PersistenceException:
Error querying database. Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INNER JOIN server.bill_periods bp ON bp.invoice_id = i.invoice_id WHERE ' at line 5
Weiß jemand, was ich hier falsch mache?
Ihr Code macht keinen Sinn. Zum Beispiel gibt es keine 'FROM'-Klausel. –
Siehe https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-very-simple-sql- Abfrage – Strawberry
wahrscheinlich ein neues Konstrukt der Tabellen über Case-Anweisungen zu verbinden – maSTAShuFu