TIBDataSet und ambiguous Fields, inkl. Alias Problem
-
Hi @all
Ich hab grad ein -kleines- Problem mit Firebird und den IB Komponenten.
Folgendes SQL-Statement:SELECT B1.*, K1.Bezeichnung Anrede, K2.Bezeichnung Sprache FROM t_Base B1 INNER JOIN t_Key K1 ON (BlaBlub) INNER JOIN t_Key K2 ON (BlubBla)
Wenn ich jetzt ein WHERE hinzufüge, geht das nur über
WHERE (K1.Bezeichnung LIKE '%23%')
Das Problem: die WHERE-Klausel soll vom Programm autom. Generiert werden.
Sprich:
WHERE (__AKTUELLES_FELD__ LIKE '%__EINGABE__%')Als aktuelles Feld (TField.FieldName) bekomme ich jedoch "Anrede", statt "K1.Bezeichnung",
was ja in Firebird schlecht is, da auf Aliase innerhalb des SQL-States
nicht zugegriffen werden kann.
So, wie kann ich das nun auflösen? Gibt es eine Möglichkeit die Tabellen- bzw. Feldaliase irgendwie auszulesen?(Mit TField.Origin bekomme ich nur t_Key.Anrede ==> idiotisch)
Danke scho ma für Hilfe
c ya, cPanther
-
Hallo
HAVING anstatt WHERE sollte die Bedingung auf die Aliase ermöglichen.
bis bald
akari
-
Hm, HAVING ist gilt doch nur für Agregation, oder?
Wie soll ich das denn einbauen, ohne großartiges Grouping?Steh echt aufn Schlauch...
Aber schon mal danke für den Hint!
c ya cPanther
-
Hallo
hm, bei MySQL würde das HAVING auch bei einer normalen Query eine Bedingung auf Aliase erlauben
SELECT feld AS alias FROM table HAVING alias IS NULL
Aber schon bei PostgreSQL geht das nicht mehr, also ist das wohl MySQL-eigen.
Vielleicht solltest du dich ins DB-Forum verschieben lassen, wirklich mit dem Builder hat das eigentlich nichst mehr zu tun.
bis bald
akari
-
Dieser Thread wurde von Moderator/in Jansen aus dem Forum VCL/CLX (Borland C++ Builder) in das Forum Datenbanken verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Mit einem View arbeiten,
oder
SELECT * FROM
(
SELECT B1.*,
K1.Bezeichnung Anrede,
K2.Bezeichnung Sprache
FROM t_Base B1
INNER JOIN t_Key K1 ON (BlaBlub)
INNER JOIN t_Key K2 ON (BlubBla)
)Having kann man eigentlich nur in Verbindung mit Group By verwenden.
-
Also das HAVING funktioniert unter Firebird nur mit Agregation.
@Scania:
In Firebird sind SubSelects als Quelle nicht erlaubt (soweit ich weiss).
Mit nem View wollt ich eigentlich nicht arbeiten, hm... mal schauen...Hät ja gedacht, das die VCL IBX Komponenten irgendwas anbieten a la
TField.AliasName,...na jut, danke für die Anregungen,
c ya, cPanther