![]() |
SELECT über 2 Tabellen - Feldzugriff?
Hallo Leutz,
ich hätte da mal wieder ein kleines Problem. Ich habe folgende Query :
Delphi-Quellcode:
ich wollte dann folgendermaßen auf das Ergebnis zugreifen :
Dataset.SQL.Text := 'SELECT * FROM tabelle1 AS a, tabelle2 AS b';
Delphi-Quellcode:
Nun kommt der Fehler : "a.feld1 wurde nicht gefunden".
einFeld := DataSet.FieldByName('a.feld1').AsString;
Was mache ich falsch? Danke schon mal :-D |
Re: SELECT über 2 Tabellen - Feldzugriff?
ich glaube bei den feldnamen im result wird nicht mehr angegeben aus welcher tabelle diese sind da ja bei entsprechender anweisung das Feld in aus beiden tabellen genommen wird und als eine spalte dargestellt werden kann
|
Re: SELECT über 2 Tabellen - Feldzugriff?
Wie müsste denn das dann praktisch aussehen? :gruebel:
|
Re: SELECT über 2 Tabellen - Feldzugriff?
Zitat:
Delphi-Quellcode:
Was ist zu tun ? Das AS weglassen. :lol: Das AS wird eher verwendet bei Berechnungen. Also gut beides gemischt. Ich brauche einen Wert, der aus 2 Tabellen errechnet wird :
Dataset.SQL.Text := 'SELECT * FROM tabelle1 AS a, tabelle2 AS b';
Delphi-Quellcode:
Dataset.SQL.Text := 'SELECT A.NR, A.PREIS, B.MENGE, A.PREIS * B.MENGE AS GESPREIS FROM TABLE1 A, TABLE2 B ORDER BY A.NR');
|
Re: SELECT über 2 Tabellen - Feldzugriff?
Zitat:
Delphi-Quellcode:
Bei mir geht das dann.
einFeld := DataSet.FieldByName('feld1').AsString;
|
Re: SELECT über 2 Tabellen - Feldzugriff?
Und wie werden die Felder benannt, wenn in beiden Tabellen ein Feld mit dem Namen "Feld1" vorhanden ist?
|
Re: SELECT über 2 Tabellen - Feldzugriff?
Das habe ich doch geschrieben. :gruebel: A.Feld1 und B.Feld1 :!:
|
Re: SELECT über 2 Tabellen - Feldzugriff?
Danke schon mal für die Antworten. Funktioniert leider immer noch nicht :(
Ich habe mal das "AS" weggelassen, aber immer noch die selbe Fehlermeldung. Nun habe ich mal die FieldList ausgegeben und da stehen alle Felder ohne die Tabellenbezeichnung "a." oder "b.", allerdings sind die Felder, die in beiden Tabellen vorkommen mit "_1" gekennzeichnet. Ich brauche aber alle Felder aus beiden Tabellen ohne aufwendige Unterscheidung ob ein Feld doppelt da ist oder nicht. Das muss doch irgendwie gehen... oder steh ich nur auf'm Schlauch? :? |
Re: SELECT über 2 Tabellen - Feldzugriff?
Zitat:
'AS' sagt nur aus, dass du in der Abfrage einer Spalte einen bestimmten Namen geben willst. Im SQL Standard darf man 'AS' _NICHT_ für Tabellen aliase verwenden! Da das TDataSet keine Ahnung von der Tabelle hat, aus der Spalte kommt, musst du die Spalten in der Abfrage eindeutig benennen. Die 2. Möglichkeit sollte aber tunlichst vermieden werden. ;)
SQL-Code:
Wesentlich besser ist aber der Zugriff über den Index.
SELECT A.Nr as SomeCol
,A.Preis "Noch eine Spalte" ,B.Menge Miep ,A.Preis * B.MENGE as GesPreis FROM Table1 A ,Table2 B ORDER BY A.Nr
Delphi-Quellcode:
Edit: Ich hatte FiledByName(1)!
SomeTDataSetDesc.Fields(1).AsInteger
|
Re: SELECT über 2 Tabellen - Feldzugriff?
Zitat:
SQL-Code:
mache!?
SELECT * FROM Tabelle1, Tabelle2
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz