Entwickler-Ecke

Datenbanken - Ms Msql über ADO, Komme nicht an eine gejointe Tabelle


sunnyandy - Do 13.09.07 08:13
Titel: Ms Msql über ADO, Komme nicht an eine gejointe Tabelle
Hallo!

Ich benutze die Ado-Komponenten, um eine Ms Sql 2000 Datenbank anzusteuern.

Ein ganz einfacher Tabellenjoin von mir ist:

SQL-Anweisung
1:
select * from kunde k1 JOIN kunde k2 ON (k1.ehepartner = k2.kunden_nr);                    


Mit dem Recordset der TAdoCommand versuche ich nun auf ein Field zuzugreifen:

Delphi-Quelltext
1:
2:
Kunde1.Vorname := rs.Fields.Item['k1.vorname'].Value;
Kunde2.Vorname := rs.Fields.Item['k2.vorname'].Value;


Da ich einen Join verwende, muss ich ja unterscheiden, ob ich Felder von Tabelle k1 oder k2 möchte (Da die Felder ja nicht eindeutig sind). Warum funktioniert das nicht mit der Punkt Trennung 'k1.vorname' (Ist das nicht Sql-Standard)? Es gibt einen Fehler, dass er das Feld nicht finden kann. Habe schon alle Möglichkeiten ausprobiert, auf die Felder zuzugreifen, aber leider bin ich kein Stückchen weitergekommen.

Vielleicht habt ihr ja einen Tipp!
Danke im Voraus!
Gruß, Andy


mkinzler - Do 13.09.07 08:29


SQL-Anweisung
1:
select k1.vorname as vorname1, .., k2.vorname as vorname2 from kunde k1 JOIN kunde k2 ON (k1.ehepartner = k2.kunden_nr);                    


sunnyandy - Do 13.09.07 11:27

Hallo!
Danke für die Antwort.
OK das heißt, ich muss wirklich jedes Feld einzeln angeben? In MySql konnte ich trotz der übergreifenden SELECT* - Anweisung einzelne Tabellen ansteuern...
Schade!


mkinzler - Do 13.09.07 11:30


SQL-Anweisung
1:
select * ...                    

sollte man sowieso nicht verwenden. das gilt im insbesonderen bei Joins


Bernhard Geyer - Do 13.09.07 16:19

user profile iconsunnyandy hat folgendes geschrieben:
OK das heißt, ich muss wirklich jedes Feld einzeln angeben? In MySql konnte ich trotz der übergreifenden SELECT* - Anweisung einzelne Tabellen ansteuern...

Ist ja auch 'ne andere DB und nicht alles ist bis ins kleinste im SQL-Standard festgelegt.


alzaimar - Do 13.09.07 17:53

Du kannst natürlich weiterhin die einzelnen Felder ansteuern. Um zu wissen, was ADO aus den mehrdeutigen Feldnamen macht, reicht ein Rechtsklick auf so eine Query-Komponente und dann der Menüpunkt 'Alle Felder hinzufügen' oder wie das auf Deutsch heißt (hab ein englisches Delphi).

Ich vermute, das die mehrdeutigen Feldnamen durchnummeriert werden. Prüf das doch.