Ich schreibe einen Bericht in BIRT. Ich habe zwei Eingabeparameter in meinem Datensatz.Parameter mehrfach verwenden
Der zweite Parameter möchte ich zweimal in meinem wo Klausel verwenden. Ich fand, dass ich Cam dies unter Verwendung einer mit Klausel tun. Beachten Sie, das ist eine Postgresql-Datenbank, so dass ich von Dual nicht brauche.
My SQL ist wie folgt:
with "params" as (select ? as "sname", ? as "ename")
select "user"."fullName", "user"."address1", "user"."address2", "user"."city", "provinces"."abbreviation", "user"."postalcode", "client"."companyName"
from "user", "params"
LEFT JOIN "client" on "user"."client" = "client"."id"
LEFT JOIN "provinces" on "user"."province" = "provinces"."id"
WHERE "user"."fullName" >= "params"."sname" and (("user"."fullName" <= "params"."ename") or ("params"."ename" =''))`
Wenn ich versuche, dies zu laufen oder die Ergebnisse in BIRT-Bildschirm bearbeiten Datensatz Vorschau bekomme ich folgende Fehlermeldung:
Error happened while running the report. at .... Caused by: org.eclipse.birt.report.data.adapter.api.AdapterException: An exception occurred during processing. Please see the following message for details: Failed to prepare the query execution for the data set: user Cannot get the result set metadata. org.eclipse.birt.report.data.oda.jdbc.JDBCException: SQL statement does not return a ResultSet object. SQL error #1:ERROR: invalid reference to FROM-clause entry for table "user" Hint: There is an entry for table "user", but it cannot be referenced from this part of the query. Position: 252;
Ich kann nicht geh dadurch. Von allem, was ich gesehen habe, sollte es funktionieren.
Unrelated, aber: Sie können den CTE tun noch kürzer: 'mit params (sname, ename) als (Werte (?,?)) ... ' –
Mögliches Duplikat von [Das Mischen von expliziten und impliziten Joins schlägt fehl mit" Es gibt einen Eintrag für Tabelle ... aber es kann nicht von diesem Teil der Abfrage aus referenziert werden "] (http: //stackoverflow.com/questions/6347897/mixing-explicit-and-implicit-join-fails-with-there-is-anentry-for-table-b) –