![]() |
Datenbank: Interbase • Version: 7.1 • Zugriff über: IBExpress
Update mit Subselect
Hallo an alle, die sich mit SQL auskennen...
ich habe folgende Datenbankstruktur (1:1 Beziehung) Tabelle A ---------- id_tabelleA id_tabelleB Tabelle B --------- id_tabelleB Nun möchte ich gerne die Relation zwischen beiden Tabellen ändern Tabelle A ---------- id_tabelleA (id_tabelleB) wird nach der Aktualisierung gelöscht Tabelle B --------- id_tabelleB id_tabelleA Nun ist meine Datenbank aber schon mit Daten gefüllt. Mein Problem ist es jetzt, wie ich die Daten von A nach B schaffe (Wert der IDs) Also in etwa:
SQL-Code:
Danke für jeden Tip!!!
Update Tabelle B SET B.id_tabelleA = (SELECT A.id_tabelleA FROM Tabelle A where A.id_tabelleB=B.id_tabelleA)
|
Re: Update mit Subselect
Wenn es sich ume eine 1:1-Beziehung handelt würde ich die IDs synchronisieren.
|
Re: Update mit Subselect
Zitat:
|
Re: Update mit Subselect
Tabelle A
---------- id_tabelle Tabelle B --------- id_tabelle A.id_tabelle = B.id_tabelle |
Re: Update mit Subselect
Zitat:
Ich tausche ja bei beiden Tabellen die Fremschlüssel aus und brauche nun ein SQL-Statement, das die Beziehung zwischen beiden Tabelle wieder herstellt. |
Re: Update mit Subselect
Mein Vorschlag wäre ja, nicht 2 verschiedene IDs sondern die selbe zu nehmen.
SQL-Code:
alter TabelleA add id_tabelle;
update TabelleA set id_tabelle = id_tabelleB; alter TabelleA drop id_tabelleA; alter TabelleA drop id_tabelleB; |
Re: Update mit Subselect
Nee das geht so nicht,..
SQL-Code:
So in etwa stelle ich mir das vor. Leider kann man keine 2 Tabellen im Update-Statement eingeben
update tabelleB B, tabelleA A set B.id_tabelleA=A.id_tabelleA where A.id_tabelleB = B.id_tabelleB;
|
Re: Update mit Subselect
SQL-Code:
update tabelleB B set B.id_tabelleA=(select A.id_tabelleB where A.id_tabelleA = B.id_tabelleA);
|
Re: Update mit Subselect
Zitat:
The next statement causes the following error: multiple rows in singleton select |
Re: Update mit Subselect
versuchs mal mit distinct oder first 1 im Subquery
|
Re: Update mit Subselect
Zitat:
Ich machs jetzt mit einer Stored Procedure. Ist zwar blöd, da ich die Procedure nur einmal brauche. Aber was soll's. Dann lösche ich die Procedure nach der Aktualisierung wieder. Trotzdem Danke!!! |
Re: Update mit Subselect
Zitat:
|
Re: Update mit Subselect
Zitat:
SQL-Code:
CREATE PROCEDURE CopyIDs
AS DECLARE VARIABLE IdTabelleA INTEGER; DECLARE VARIABLE IdTabelleBINTEGER; BEGIN FOR SELECT id_tabelleA, id_tabelleB FROM tabelleA INTO :IdTabelleA , :IdTabelleB DO BEGIN UPDATE tabelleB B SET B.id_tabelleA=:IdTabelleA WHERE id_tabelleB=:IdTabelleB; END END; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:19 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