![]() |
Datenbank: Firebird • Zugriff über: IB Komponenten
Aktualisierung von 2 Tabellen
Morgen,
ich habe mir in einem IBQuery eine SQL Anweisung erstellt, welche mir Daten aus 2 Tabellen ausließt. Ich zeige mir diese Daten in einem DBGrid an. Funktioniert alles soweit wunderbar. Wenn ich mich jetzt aber an das IBUpdate begebe, komme ich ins stocken. Wenn ich mir den SQL Code dort automatisch generieren lasse, so will er immer nur auf eine Tabelle zugreifen. Also werde ich die SQL Anweisung wohl per Hand schreiben müssen. Kann mir da einer von euch bitte einmal einen kurzen Anschub in die richtige Richtung geben? Hier sind mal die beiden Anweisungen für die Tabelle. Diese müßte ich jetzt zusammenführen. Select ID, TELEFON, FAX, RAUM from TELEFON where TELEFON = :TELEFON and FAX = :FAX and RAUM = :RAUM Und die nächste Tabelle Select NACHNAME from STAMMDATEN where NACHNAME = :NACHNAME Kann ich diese beiden Anweisungen per Join etc. zusammenbringen? Danke Patrick |
Re: Aktualisierung von 2 Tabellen
Höchstwahrscheinlich kannst du die beiden Tabellen joinen. Dazu musst du (oder besser wir) die Felder kennen, die in beiden Tabellen gleich sind, bzw. die Verbindung herstellen.
Das Beste wäre jetzt also, wenn du uns die Struktur der Tabellen verrätst. |
Re: Aktualisierung von 2 Tabellen
Anhand deiner Abfragen ist kein Zusammenhang zwischen den beiden Tabellen ersichtlich. Imhi ist ein dein Problem wohl nicht mit einen join zu lösen.
Wie Bejamin schon gepostet hat, wären nahere Details sinnvoll/notwendig. |
Re: Aktualisierung von 2 Tabellen
Die Tabellen sehen folgendermaßen aus.
Tabelle STAMMDATEN Felder ID, NACHNAME ( weitere Felder, die benötige ich aber nicht) Tabelle TELEFON Felder ID, TELEFON, FAX, RAUM die Tabellen sind über das Feld ID verbunden Meine SQL Anweisung im Query sieht so aus select STAMMDATEN.NACHNAME, TELEFON.TELEFON, TELEFON.FAX, TELEFON.RAUM FROM STAMMDATEN left outer JOIN TELEFON ON STAMMDATEN.ID = TELEFON.ID Reicht dass? |
Re: Aktualisierung von 2 Tabellen
Deine Struktur ist gefährlich! Ich würde dir Raten die Telefontabelle um eine FK-Feld zu erweitern, welches dann mit der ID der Stammdatentabelle verknüpft ist.
In deiner Struktur kann ich auch keinen Sinn erkennen, da sie ja nur 1-1 Verbindungen zuläßt, d.h. der Vorteil meherer Telefonnummern pro Person zu erfassen entfällt. Desweiteren würde ich das Feld Raum in die Stammdatentabelle verlegen und die Felder Telefon, Fax verschmelzen. Damit meine ich ein Feld Nummer und ein Feld, welches die Art angibt ( Telefon, fax, Mobil, ...) und dann pro Nummer einen Eintrag in der Telefon (besser Kommunikation o.ä). |
Re: Aktualisierung von 2 Tabellen
Es gibt nur eine 1-1 Verbindung, es wird pro Person nur eine Eingabe im Feld Telefon geben. Es sollen hier nur die Büro internen Nr. eingetragen werden. und hinterher in einer HTML Datei fürs Intranet ausgegeben werden.
|
Re: Aktualisierung von 2 Tabellen
Warum dann 2 Tabellen?
|
Re: Aktualisierung von 2 Tabellen
Die "richtige" Lösung lautet also:
Bereinige erstmal die DB-Struktur (Siehe Posts von mkinzler). Danach könnte dein Query etwa so aussehen:
SQL-Code:
Die Tabelle Kommunikation enthält einen FK (FKStammDaten) auf die ID in den Stammdaten.
select /*dies und das und jenes*/
from Stammdaten s inner join Kommunikation k on k.FKStammDaten=s.ID where s.Nachname='blubb' |
Re: Aktualisierung von 2 Tabellen
Weil die Haupt Tabelle Stammdaten schon besteht.
Diese Daten hole ich aus einem anderen Programm, wo quasi die Personalverwaltung mit gemacht wird. Leider kann ( darf )ich diese Tabelle nicht um die 3 Felder erweitern. |
Re: Aktualisierung von 2 Tabellen
Unabhängig von der theoretischen Diskussion über die Sinnhaftigkeit der Konstruktion, versuch es mal mit
SQL-Code:
Stephan
Select
ID, TELEFON, FAX, RAUM from TELEFON, STAMMDATEN where TELEFON.ID = STAMMDATEN.ID and TELEFON = :TELEFON and FAX = :FAX and RAUM = :RAUM and NACHNAME = :NACHNAME |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:36 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 by Thomas Breitkreuz