Tabellen-Alias Problem mit FB 3

Themen rund um den praktischen Einsatz von Firebird. Fragen zu SQL, Performance, Datenbankstrukturen, etc.

Moderator: thorben.braun

Antworten
Benutzeravatar
joerg_b
Beiträge: 13
Registriert: Mi 26. Sep 2018, 19:15

Mi 26. Sep 2018, 19:32

Toll, das es ein deutsches FB Forum gibt.
Bisher kannte ich nur die Yahoogrups, die fand ich nicht so dolle. Und gans früher gabs die Newsgroups, das war prima aber schon ewig her.




Hallo zusammen, Ich muss von FB 1.5 nach FB 3.0 wechseln, soweit klappt das ausch leidlich.

Nur folgendes nervige Problem hab ich, das mir viel Arbeit bereitet.
In FB 1.5 ging das ohne Probleme

select a.*, b.*
from Tbl1 a
join Tbl2 b on a.feldx = b.feldx
where tbl1.feldx = :FELDX

in FB 3 erhalte ich dabei die Fehlermeldung unknown column tbl1.feldx :cry: in der where Anweisung
Schreib ich in FB3 stattdessen where a.feldx = :FELDX ist alles gut.
Entferne ich die Aliase a und b und ersetzte sie durch die Tabellennamen gehts ebenfalls

Nur nervt es bei der Umstellung, und der Sinn dieser Einschränkung erschliesst sich mir nicht
Weiss da jemand eine Abhilfe, oder einen Parameter , den man setzten kann oder irgendwas ... das wäre echt toll

Vielen Dank schonmal im voraus
Schöne Grüße aus dem Südharz
Jörg
Benutzeravatar
martin.koeditz
Beiträge: 101
Registriert: Sa 31. Mär 2018, 14:35

Do 27. Sep 2018, 10:15

Guten Morgen Jörg,

schön dass du den Weg ins Forum gefunden hast. :)

Führst du die Anweisung in einer Prozedur oder einem Trigger aus? Welche Version hast du im Einsatz? Die 3.0.3?

Gruß
Martin
Martin Köditz
it & synergy GmbH
bfuerchau
Beiträge: 92
Registriert: Mo 7. Mai 2018, 18:09

Fr 28. Sep 2018, 08:52

Leider gibt es da keinen Workaround.
Laut SQL-Standard ersetzt der Alias den Tabellennamen.
Du musst deine SQL's leider umbauen.
Da wird es mit Sicherheit noch die eine oder andere Hürde geben, da sich auch im Verhalten die eine oder andere Änderung ergibt.
Benutzeravatar
joerg_b
Beiträge: 13
Registriert: Mi 26. Sep 2018, 19:15

Fr 28. Sep 2018, 10:27

danke für die Anrworten

Nö Trigger gibts mal, mal nicht. das ist egal Proceduren eher nicht.
Es ist einfach ein Fehler der schon beim Parsen der SQL passiert, genauso als hätte ich select mit 'k' geschrieben.

Und es ist halt nervig, weil ich gern mit diesen Alias-Angaben arbeite , aber zb Programm-Dialoge direkt where-Angaben ändern, die die Alias Angaben nicht benutzen, sondern die Tabellennamen.

Hmpf, sehr ärgerlich, weil eine mehr als unnötige Einschränkung mit vermeidbarem Aufwand
Aber wohl nicht zu ändern
Schöne Grüße aus dem Südharz
Jörg
Antworten