[gelöst] Hallo, ich habe in meinem Programm zwei miteinander verknüpfte Tabelle per "select from Tabelle1 join Tabelle2 ". In einer ListView möchte ich nun verschiedene Felder aus beiden Tabellen darstellen - aber wie greift man auf die Felder der Tabelle2 zu?
Die Zuweisung zu einer Variablen per "Name1:=Form1,SQLQuery1.FieldByName('Name1').AsString;" funktioniert nur dann, wenn ich Tabelle1 meine. Möchte ich das Feld "Name2" aus Tabelle2 haben, so funktioniert die Zuweisung zu einer Variablen mit "Name2:=Form1,SQLQuery1.FieldByName('Name2').AsString;" leider nicht - die Variable Name2 bleibt leer.
Wie muß ich es also richtig machen?
Danke sehr
Verknüpfte Tabellen
-
- Beiträge: 143
- Registriert: Mo 30. Mär 2020, 12:37
Verknüpfte Tabellen
Zuletzt geändert von Joachim Raap am Mi 20. Mai 2020, 10:11, insgesamt 1-mal geändert.
- af0815
- Lazarusforum e. V.
- Beiträge: 6777
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Verknüpfte Tabellen
Das ist keine vernünftiges select/join Statement, das ist ganz einfach Schrott. Geht Google nicht mehr ?Joachim Raap hat geschrieben: Di 19. Mai 2020, 17:54 Hallo, ich habe in meinem Programm zwei miteinander verknüpfte Tabelle per "select from Tabelle1 join Tabelle2 ". In einer ListView möchte ich nun verschiedene Felder aus beiden Tabellen darstellen - aber wie greift man auf die Felder der Tabelle2 zu?
Wenn, dann soselect from Tabelle1 join Tabelle2
Gewöhn dir an nach dem SELECT die Felder anzugeben, die du Abfragen willst. Nachdem du spezifiziert hast welchen JOIN (inner, left, rightm..) musst du auch angeben auf welchen Spalten der Join basiert. Das ist der ON ... Teil. Normalerweise der Fremdschlüssel der einen Tabelle mit dem Primärschlüssel der anderen Tabelle.SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;
Bein den Spalten kannst du dann den Tabellennamen voranstellen, damit klar ist aus welcher Tabelle die Daten entnommen werden. Falls es Spalten gibt, die in beiden Tabellen gleich heissen, so muss man mit AS einen Alias angeben.
Siehe auch https://www.w3schools.com/sql/sql_join.asp (Kann man mit Translate auch ins deutsche übersetzen- links oben). Die Seite wird dir auch weitere Fragen beantworten.
Wenn alle aus Tabelle1 angezeit werden und zusätzlich die aus Tabelle 2, wenn die ID (oder sonstwas was du nehmen wills) gleich istselect Name1, Name2
from Tabelle1 left join Tabelle2
on Tabelle1.ID = Tabelle2.ID
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).