Verknüpfte Tabellen

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Joachim Raap
Beiträge: 57
Registriert: Mo 30. Mär 2020, 12:37

Verknüpfte Tabellen

Beitrag von Joachim Raap »

[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
Zuletzt geändert von Joachim Raap am Mi 20. Mai 2020, 10:11, insgesamt 1-mal geändert.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 4116
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: Verknüpfte Tabellen

Beitrag von af0815 »

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?
Das ist keine vernünftiges select/join Statement, das ist ganz einfach Schrott. Geht Google nicht mehr ?
select from Tabelle1 join Tabelle2
Wenn, dann so
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;
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.

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.

select Name1, Name2
from Tabelle1 left join Tabelle2
on Tabelle1.ID = Tabelle2.ID
Wenn alle aus Tabelle1 angezeit werden und zusätzlich die aus Tabelle 2, wenn die ID (oder sonstwas was du nehmen wills) gleich ist
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten