AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL Abfrage aus mehreren Tabellen...
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Abfrage aus mehreren Tabellen...

Ein Thema von Michaela_ · begonnen am 24. Sep 2004 · letzter Beitrag vom 24. Sep 2004
Antwort Antwort
Michaela_

Registriert seit: 11. Aug 2004
Ort: Wien
61 Beiträge
 
Delphi 5 Professional
 
#1

SQL Abfrage aus mehreren Tabellen...

  Alt 24. Sep 2004, 16:23
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
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#2

Re: SQL Abfrage aus mehreren Tabellen...

  Alt 24. Sep 2004, 16:39
Ü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;
Gruß
Hansa
  Mit Zitat antworten Zitat
Michaela_

Registriert seit: 11. Aug 2004
Ort: Wien
61 Beiträge
 
Delphi 5 Professional
 
#3

Re: SQL Abfrage aus mehreren Tabellen...

  Alt 24. Sep 2004, 16:52
Hallo Hansa,

also ich weiss nicht genau was du meinst.

Ich habs zumindest mit einer zweiten Tabelle geschaft. Und zwar so:

Code:
Query.SQL.Text := 'SELECT Texte1.Info TXT1 
                   FROM Texte1 
                   INNER JOIN Artikel
                   ON Texte1.IDX = Artikel.TextID1
                   WHERE Artikel.Code = 'B'
Wie sieht das mit mehr als einer Tabelle aus. Ist INNER JOIN dann noch möglich?

lg,
michaela
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: SQL Abfrage aus mehreren Tabellen...

  Alt 24. Sep 2004, 17:02
Zitat von Michaela_:
Ich habs zumindest mit einer zweiten Tabelle geschaft. Und zwar so:

Code:
Query.SQL.Text := 'SELECT Texte1.Info TXT1 
                   FROM Texte1 
                   INNER JOIN Artikel
                   ON Texte1.IDX = Artikel.TextID1
                   WHERE Artikel.Code = 'B'
Wie sieht das mit mehr als einer Tabelle aus. Ist INNER JOIN dann noch möglich?
Du bist auf dem richtigem Weg.
Aber du solltest LEFT OUTER JOINS verwenden, denn sonst kann es dir passieren, dass
Zeilen aus der Artikeltabellen verloren gehen !

SQL-Code:
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'
Es ist natürlich ungeschickt die Nachschlagetexte in 3 verschiedenen Tabellen mit gleicher Struktur unterzubringen.
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)
Andreas
  Mit Zitat antworten Zitat
Michaela_

Registriert seit: 11. Aug 2004
Ort: Wien
61 Beiträge
 
Delphi 5 Professional
 
#5

Re: SQL Abfrage aus mehreren Tabellen...

  Alt 24. Sep 2004, 17:21
hi shmia,

danke dir.

Wie würde die Abfrage denn aussehen wenn ich die Tabelle so ändere wie du vorgeschlagen hast?


lg,
michaela
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz