![]() |
Datenbank: Interbase • Version: 6.5 • Zugriff über: SQL
SQL Update alle Einträge
Hallo,
gibt es eine Möglichkeit mit einer UPDATE Anweisung alle Datensätze zu ändern ABER mit unterschiedlichen Werten für die einzelnen Datensätze? Struktur: Tab1 (pkey,reckey,sortstr) Tab2 (pkey,f1,f2,...fn) Tab1.reckey=Tab2.pkey Es kann mehrere Datensätze in Tab1 geben die den gleichen reckey haben! Was gemacht werden soll: Tab1.sortstr soll aktualisiert werden. Dabei entspricht Tab1.sortstr=concat(tab2.f5+tab2.f1+...) Wie bekomme ich das mit einem SQL-Statement hin ohne alle Datensätze in Tab2 durchlaufen zu müssen? Hat jemand einen Tipp? |
AW: SQL Update alle Einträge
Und wie unterscheiden sich die Werte? Ist der neue Wert berechenbar?
|
AW: SQL Update alle Einträge
Zitat:
|
AW: SQL Update alle Einträge
Dann sind sie ja "berechenbar/ermittelbar"
|
AW: SQL Update alle Einträge
Falls ich Dich richtig verstanden habe kannst Du es mal so versuchen:
SQL-Code:
UPDATE Tab1
SET sortstr = ( SELECT Tab2.f5 || Tab2.f1 || ... FROM Tab2 WHERE Tab2.pkey = Tab1.reckey) |
AW: SQL Update alle Einträge
also mit
Code:
erhalte ich die richtige Ergebnismenge aber leider meckert interbase beim update mit "multiple rows in singleton select"
select (tab2.f2||tab3.fx ...)
from tab1 left outer join tab2 an (tab1.reckey=tab2.pkey) |
AW: SQL Update alle Einträge
Der Subquery liefert mehrere Ergebniszeilen; du musst diesen so anpassen, dass genau ein Ergebnis rauskommt.
|
AW: SQL Update alle Einträge
Dann habe ich die Master-Detail-Beziehung doch falsch verstanden (oder sie war falsch geschildert).
|
AW: SQL Update alle Einträge
Zitat:
|
AW: SQL Update alle Einträge
Er meint je zu aktualisierendem Datensatz ein Datensatz aus der Subquery. Im Moment kommen in Letzterer noch mehrere, da musst Du die Kriterien anpassen, damit nur der eine passende kommt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:10 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