Wenn du per
SQL Daten aus mehreren Tabellen abfragst, dann darfst du strenggenommen nur einmal den Wildcard * benützen.
SQL-Code:
SELECT tmp_adressen.*, tmp_fahrzeuge.Feld1, tmp_fahrzeuge.Feld2,...
FROM tmp_fahrzeuge left join tmp_adressen on tmp_fahrzeuge.fzg_adrnr=tmp_adressen.kd_lfdnr
Grund: es könnte gleichnamige Feldnamen in mehreren Tabellen geben.
Je nach Treiber und Datenbank gibt es unterschiedliche Strategien diese Feldnamenkollisionen aufzulösen.
Wenn es blöd läuft, gibt es zwei Felder mit dem gleichen Namen.
Dies könnte die Datenbanktreiberschicht (Zeos) natürlich in Bedrängnis bringen, wenn im Fields[]-Array gleichnamige Felder sind.
Genau genommen sind die Tabellen, aus denen ich was einlesen muß, Foxpro-Tabellen. Da ich aber die Tabellen über ein Join zusammenführen muß, habe ich mich dazu entschieden diese erst einmal in tmp_tabellen in meine
MySQL-
DB 1-zu-1 zu übertragen. Einzigen Änderung: Feldname bekommen jeweils ein Präfix KD_ für Adressen, FZG_ für Fahrzeuge und ANR_ für Anreden. Damit ist schon einaml sichergestellt, dass es eben keine doppelten Feldname geben wird, wenn mal mit Platzhaltern arbeitet.
Alle Feldnamen explizit im Select ..... join... aufzuführen wäre zwar möglich, möchte ich aber eigentlich nicht machen, weil ich nicht sicherstellen kann, dass die Feldnamen bzw. Feldanzahl der Quell-Forxpro-Dateien immer so bleibt. Und wenn sich diese mal verändern sollte, würde meine Select-Anweisung plötzlich nicht mehr funktionien bzw. nicht alle Daten liefern.
Außerdem bleibt dann ja die Frage, warum es bei Adressen mit Join auf Anreden mit den Wildcard's geht? Da müßte der Fehler ja auch auftreten.
Folgende Abfrage
Code:
SELECT tmp_adressen.*, tmp_fahrzeuge.* FROM tmp_fahrzeuge left join tmp_adressen on tmp_fahrzeuge.fzg_adrnr=tmp_adressen.kd_lfdnr
schlägt unter delphi mit folgendem Fehler an: Fehler bei Bereichsprüfung.
Bereichsprüfung hört sich so an als ob z.B. ein solches Konstruckt im Spiel sei:
Delphi-Quellcode:
type
Sqlstring=array [1..80] of char;
...
Sqlstring:=Stringmit90zeichen;
Könnte das der Grund sein?
Gruß
K-H
Hier weiß ich lieder nicht so ganz, was du meinst bzw. worauf du hinaus willst.