![]() |
SQL Abfrage aus mehreren Tabellen...
Hallo,
ich hatte noch nie viel mit sql zu tun, aber nun bleibt mir nichts anderes übrig und da steh ich nun gleich vor einem Problem. Es sieht so aus: Eine Tabelle beinhaltet eine Liste mit Artikel, zu jedem können drei Texte abgelegt werden. Diese sind in drei anderen Tabellen enthalten. [Artikel][Text1][Text2][Text3] A 1 1 2 B 5 3 6 C 0 3 7 In der Artikeltabelle sind in den Spalten der Index zu dem Eintrag in den anderen Tabellen enthalten. Mit Locate oder so wäre es kein Problem aber ich denk das müsste doch schöner zu lösen sein. Jetzt frage ich mich ob es möglich ist mit nur einer SELECT Anweisung auch gleichzeitig an den Inhalt der Felder aus den einzelnen Tabellen zu kommen. Ich hoffe das war jetzt nicht zu kompliziert... danke für eure hilfe, Michaela |
Re: SQL Abfrage aus mehreren Tabellen...
Übergebe an die Texte die ID des zugehörigen Artikels (z.B. als ID_ART).
Pro Artikel erhält man die Texte dann so :
Delphi-Quellcode:
TextDS.Close;
TextDS.ParamByName ('ID_ART') := ArtDS.FieldByName ('ID'); TextDS.SelectSQL := 'SELECT * FROM TEXTE WHERE ID_ART= :ID_ART'; TextDS.Open; |
Re: SQL Abfrage aus mehreren Tabellen...
Hallo Hansa,
also ich weiss nicht genau was du meinst. Ich habs zumindest mit einer zweiten Tabelle geschaft. Und zwar so:
Code:
Wie sieht das mit mehr als einer Tabelle aus. Ist INNER JOIN dann noch möglich?
Query.SQL.Text := 'SELECT Texte1.Info TXT1
FROM Texte1 INNER JOIN Artikel ON Texte1.IDX = Artikel.TextID1 WHERE Artikel.Code = 'B' lg, michaela |
Re: SQL Abfrage aus mehreren Tabellen...
Zitat:
Aber du solltest LEFT OUTER JOINS verwenden, denn sonst kann es dir passieren, dass Zeilen aus der Artikeltabellen verloren gehen !
SQL-Code:
Es ist natürlich ungeschickt die Nachschlagetexte in 3 verschiedenen Tabellen mit gleicher Struktur unterzubringen.
SELECT Artikel.IDX, Texte1.Info TXT1, Text2.Info TXT2, Text3.Info TXT3
FROM Artikel LEFT OUTER JOIN Texte1 ON Artikel.TextID1=Texte1.IDX LEFT OUTER JOIN Texte2 ON Artikel.TextID2=Texte2.IDX LEFT OUTER JOIN Texte3 ON Artikel.TextID3=Texte3.IDX WHERE Artikel.Code = 'B' Da wäre eine Tabelle mit einem zusätzlichen Feld schlauer gewesen:
Code:
Tabelle NTexte
====================== IDX Int (NOT NULL) TextTyp Int (NOT NULL) Info varchar(200) |
Re: SQL Abfrage aus mehreren Tabellen...
hi shmia,
danke dir. Wie würde die Abfrage denn aussehen wenn ich die Tabelle so ändere wie du vorgeschlagen hast? lg, michaela |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:12 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-2025 by Thomas Breitkreuz