AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Interbase 2 Tabellen verknüpfen über TIBTable (JOIN)
Thema durchsuchen
Ansicht
Themen-Optionen

Interbase 2 Tabellen verknüpfen über TIBTable (JOIN)

Ein Thema von spoona · begonnen am 1. Aug 2006 · letzter Beitrag vom 7. Aug 2006
Antwort Antwort
spoona

Registriert seit: 2. Mär 2005
48 Beiträge
 
#1

Interbase 2 Tabellen verknüpfen über TIBTable (JOIN)

  Alt 1. Aug 2006, 22:48
Datenbank: Interbase • Version: 6.0 • Zugriff über: Interbase
Hallo,

ich weiß gerade leider nicht wo genau ich nach suchen soll und habe leider auch nichts gefunden.
Ich habe eigentlich ein ganz einfaches Problem:

1.Ich habe eine Tabelle "Adresse", in der eine Postleitzahl anzugeben ist bzw. gepflegt wird.
Diese Postleitzahl ist als ID zu einer Tabelle "Postleitzahl" referenziert.
Über ein DBEdit-feld lese ich den Wert der Postleitzahl aus Adresse aus, jetzt will ich aber über diese Postleitzahl einen Join zu der anderen Tabelle "Postleitzahl" machen, damit ich die zugehörige Stadt und Land bekomme der in Postleitzahl gepflegt ist und natürlich nicht in Adresse.
Ich weiß gerade leider nicht wie ich das mit den Interbase bzw. TibTable Komponenetn hinbekommen soll, ohne SQL. Es müssen wohl irgendwelche Einstellungen getätigt werden, die ich leider nicht weiß.
SQL wäre soetwas:
select Stadt
from Adresse, Postleitzahl
where Adresse.ID=11111 and Adresse.PostCode=Postleitzahl.PostCode
Ergebnis wäre dann z.B. Hamburg

Vielen Dank für Eure Hilfe
Gruß Spoona
  Mit Zitat antworten Zitat
Hansa

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

Re: Interbase 2 Tabellen verknüpfen über TIBTable (JOIN)

  Alt 1. Aug 2006, 23:27
Zitat von spoona:
1.Ich habe eine Tabelle "Adresse", in der eine Postleitzahl anzugeben ist bzw. gepflegt wird. Diese Postleitzahl ist als ID zu einer Tabelle "Postleitzahl" referenziert.
Zuerst mal : Ist die ID von der PLZ entkoppelt oder nicht ? Das heißt : steht in dem Adresse-Dataset eine interne ID oder im Klartext die PLZ ? Im letzteren Fall ist das Prinzip wohl eher unklar. 8)

Zitat von spoona:
hinbekommen soll, ohne SQL.
Interbase ohne SQL ? -> vergessen.

Dann noch IB 6.0. Das ist tot. IBTable ? Ist das nicht aus der noch toteren BDE ?
Gruß
Hansa
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Interbase 2 Tabellen verknüpfen über TIBTable (JOIN)

  Alt 2. Aug 2006, 05:49
Zitat:
Zuerst mal : Ist die ID von der PLZ entkoppelt oder nicht ? Das heißt : steht in dem Adresse-Dataset eine interne ID oder im Klartext die PLZ ? Im letzteren Fall ist das Prinzip wohl eher unklar. Cool
Ich bin zwar auch ein Befürworter von künstlichen Schlüsseln aber auch die Verwendung von natürlichen Schlüsseln ( hier die PLZ) ist möglich. Ich würde aber auch IDs verwenden.
Zitat:
Ist das nicht aus der noch toteren BDE ? Razz
Nein IBX.
Ich stimme Hansa vollständig zu, daß die an die BDE angelegte IBTable-Komponente, welche die eigentliche SQL-Ebene versteckt (Kapselung von Select * from <Tabellennamen>; ) nicht mehr verwendet werden sollte.
Nimm eine TIBQuery und nimm die SQL-Abfrage.
Markus Kinzler
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.366 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: Interbase 2 Tabellen verknüpfen über TIBTable (JOIN)

  Alt 2. Aug 2006, 06:11
Hi,

Zitat von mkinzler:
Nimm eine TIBQuery und nimm die SQL-Abfrage.
lt. Jeff Overcash (Programmierer von IBX) ist selbst die TIBQuery nur aus kompatibilitätsgründen vorhanden uns sollte gegen eine TIBSQL oder TIBDataSet getauscht werden.

Lemmy
  Mit Zitat antworten Zitat
spoona

Registriert seit: 2. Mär 2005
48 Beiträge
 
#5

Re: Interbase 2 Tabellen verknüpfen über TIBTable (JOIN)

  Alt 2. Aug 2006, 08:01
Hallo,

ja das Ding ist wohl leider etwas veraltet, aber ich habe die jetzt so fest in meinem Programm verankert, dass ich keine Zeit mehr habe diese jetzt alle umzubauen. Meini UNI will eine Abgabe

Also indem Fall wäre die ID in der Adress Dataset auch die PLZ.
Habe hier keinen künstlichen Schlüssel verwendet.
Vielleicht kann mir jemand sagen, wie ich das ganze mit TIBTable und TDataSource umsetze.
Das wäre echt super

Vielen DAnk Gruß Spoona
  Mit Zitat antworten Zitat
Hansa

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

Re: Interbase 2 Tabellen verknüpfen über TIBTable (JOIN)

  Alt 2. Aug 2006, 10:43
Vorab : es dürfte egal sein, wann und wo und ob Du das da abgibst oder nicht. Du hast viel zu wenig verstanden und wenns diesmal gut geht, dann spätestens beim nächsten mal nicht mehr.

Zitat von spoona:
Also indem Fall wäre die ID in der Adress Dataset auch die PLZ.
Was ist wohl die ID ? Die steht für "Identifikation" Und welcher Datensatz soll nun anhand der PLZ identifiziert werden ? Das verstehe wer will. "künstliche Schlüssel", was soll das sein ? Das Prinzip ist ganz einfach : jeder Datensatz erhält zunächst mal eine ID. Dadurch kann er eindeutig identifiziert werden. Man nimmt dafür aber eben kein normales Datensatzfeld, denn das könnte sich ja ändern. Denn dann ginge es los : ist das nicht schon vorhanden usw. Man läßt auch keinen Programmbenutzer an die ID dran und zeigt sie ihm nicht mal. Verknüpfungen zwischen den Tabellen sollten dann nur über die IDs gemacht werden. Du kannst dann alle Felder ändern und jede Ausgabe würde noch dasselbe Ergebnis bringen wie vor der Änderung, zumindest was die Datenmenge betrifft.
Gruß
Hansa
  Mit Zitat antworten Zitat
spoona

Registriert seit: 2. Mär 2005
48 Beiträge
 
#7

Re: Interbase 2 Tabellen verknüpfen über TIBTable (JOIN)

  Alt 2. Aug 2006, 11:20
Hallo

Zitat:
Vorab : es dürfte egal sein, wann und wo und ob Du das da abgibst oder nicht. Du hast viel zu wenig verstanden und wenns diesmal gut geht, dann spätestens beim nächsten mal nicht mehr.
NEIN, gerade ist geht es nur darum dass es funktioniert, ich glaube nicht dass du in der Situation bist es richtig beurteilen zu können. Für das nächste Mal würde ich garantiert anders an die Sache heran gehen


Danke für die Erklärung ID und künstlicher Schlüssel! Ich denke ich bekomme das gerade noch hin

Über diese ID in der Adresstabelle würde diese ID auch NICHT den Datensatz eindeutig referenzieren. Es geht hier lediglich um eine Fremdschlüsselbeziehung zu Postleitzahl, die ich entweder über eine ID abbilde, die in der Tabelle Postleitzahl drin ist oder die PLZ als Fremdschküsselreferenzierung nehme. Aber das ist hier einfach nicht meine Frage. Ich denke ich bin im Stande ein normalisiertes Datenmodel aufzustellen. Also wenn du keine Antwort zu meiner Farge hast, dann brauche ich auch deine Kommentare nicht.

Ich brauche eine richtige Antwort auf meine Frage.
1) Ich versuche es richtig über die TIBTable und DataSource Komponente hinzubekommen
2) Wenn ich die DataSet-Komponente einbaue, hätte ich eher Angst noch einige Stunden damit zu verbringen meine Anwendung zum Laufen zu bringen, wenn es einfach ist wäre es natürlich super!!!!

Gruß Spoona
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Interbase 2 Tabellen verknüpfen über TIBTable (JOIN)

  Alt 2. Aug 2006, 12:20
Haben die TIbTable keine Properties Filtered und Filter? Die Eigenschaft Filter wäre eigentlich genau die Eigenschaft, in der du die Where-Klausel unterbringen könntest.

Grüße
Mikhal
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
Hansa

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

Re: Interbase 2 Tabellen verknüpfen über TIBTable (JOIN)

  Alt 2. Aug 2006, 12:21
Zitat von spoona:
Es müssen wohl irgendwelche Einstellungen getätigt werden, die ich leider nicht weiß.
SQL wäre soetwas:

Delphi-Quellcode:
select Stadt
from Adresse, Postleitzahl
where Adresse.ID=11111 and Adresse.PostCode=Postleitzahl.PostCode
Aber bitte ohne SQL, was ? Und wehe einer sagt einem Studenten auch noch, daß er was falsch angeht. 3 Leute sagen Dir, du sollst die TIBtable wegschmeißen und das TIBQuery gleich mit. Warum wird das denn nicht mal versucht ?

Also gut, ich schreibe die 3 Zeilen (Prinzip) selber :

Delphi-Quellcode:
DS.Close;
DS.SelectSQL.Text := 'select Stadt from Adresse where Adresse.ID=11111';
DS.Open;
DS = Tdataset-Nachfahre. Hier wohl TIBDataset. Das liefert dann die Stadt der Adresse, die die ID 11111 hat. Wo soll da jetzt die PLZ ins Spiel kommen ? Da das Select so wohl auch nicht gewünscht ist empfehle ich, dieses zunächst in IBExpert zu testen. Ist es richtig, dann so in das Delphi-Programm einbauen. 8)

P.S.: Das bezieht sich auf 2) in #7. Auf 1) gehe ich nicht erst ein. Der Datasource muß lediglich das Dataset zugeordnet werden. Hat das DBGrid diese Datasource, dann stehen die Daten schnell drin !
Gruß
Hansa
  Mit Zitat antworten Zitat
spoona

Registriert seit: 2. Mär 2005
48 Beiträge
 
#10

Re: Interbase 2 Tabellen verknüpfen über TIBTable (JOIN)

  Alt 7. Aug 2006, 10:15
Hallo,

also um diesen Thread zu Ende zu bringen, habe ich eine schnelle Lösung gefunden.
Das Stichwort lautet Lookup:
Darüber kann ich ein Join realisieren, was mir in meiner Situation erstmal geholfen hat.
Vielen Dank für Eure Hilfe, zukünftigt werde ich nur noch mit den Querys arbeiten

Gruß Spoona
  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 11:21 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