Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Update mit Subselect (https://www.delphipraxis.net/96130-update-mit-subselect.html)

Nico80 19. Jul 2007 08:39

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:
Update Tabelle B SET B.id_tabelleA = (SELECT A.id_tabelleA FROM Tabelle A where A.id_tabelleB=B.id_tabelleA)
Danke für jeden Tip!!!

mkinzler 19. Jul 2007 08:42

Re: Update mit Subselect
 
Wenn es sich ume eine 1:1-Beziehung handelt würde ich die IDs synchronisieren.

Nico80 19. Jul 2007 08:45

Re: Update mit Subselect
 
Zitat:

Zitat von mkinzler
Wenn es sich ume eine 1:1-Beziehung handelt würde ich die IDs synchronisieren.

Und wie?

mkinzler 19. Jul 2007 08:47

Re: Update mit Subselect
 
Tabelle A
----------
id_tabelle


Tabelle B
---------
id_tabelle

A.id_tabelle = B.id_tabelle

Nico80 19. Jul 2007 08:55

Re: Update mit Subselect
 
Zitat:

Zitat von mkinzler
Tabelle A
----------
id_tabelle


Tabelle B
---------
id_tabelle

A.id_tabelle = B.id_tabelle

So ganz kapiere ich das noch nicht.
Ich tausche ja bei beiden Tabellen die Fremschlüssel aus und brauche nun ein SQL-Statement, das die Beziehung zwischen beiden Tabelle wieder herstellt.

mkinzler 19. Jul 2007 09:06

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;

Nico80 19. Jul 2007 09:25

Re: Update mit Subselect
 
Nee das geht so nicht,..

SQL-Code:
update tabelleB B, tabelleA A set B.id_tabelleA=A.id_tabelleA where A.id_tabelleB = B.id_tabelleB;
So in etwa stelle ich mir das vor. Leider kann man keine 2 Tabellen im Update-Statement eingeben

mkinzler 19. Jul 2007 09:32

Re: Update mit Subselect
 
SQL-Code:
update tabelleB B set B.id_tabelleA=(select A.id_tabelleB where A.id_tabelleA = B.id_tabelleA);

Nico80 19. Jul 2007 09:43

Re: Update mit Subselect
 
Zitat:

Zitat von mkinzler
SQL-Code:
update tabelleB B set B.id_tabelleA=(select A.id_tabelleB where A.id_tabelleA = B.id_tabelleA);

Folgende Fehlermeldung:

The next statement causes the following error:
multiple rows in singleton select

mkinzler 19. Jul 2007 09:46

Re: Update mit Subselect
 
versuchs mal mit distinct oder first 1 im Subquery


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:59 Uhr.
Seite 1 von 2  1 2      

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