AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL Server: Mehrere Datensätze gleichzeitig vergleichen und ändern
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Server: Mehrere Datensätze gleichzeitig vergleichen und ändern

Ein Thema von romber · begonnen am 17. Okt 2014 · letzter Beitrag vom 17. Okt 2014
Antwort Antwort
Seite 2 von 2     12   
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.166 Beiträge
 
Delphi 10 Seattle Professional
 
#11

AW: SQL Server: Mehrere Datensätze gleichzeitig vergleichen und ändern

  Alt 17. Okt 2014, 12:16
So solltest du jeweils den ersten Wert bekommen, den du dann in alle anderen Datensätze reinpassten musst
SQL-Code:
SELECT v_id, v_nr, v_from
FROM vertrag
WHERE (v_nr, v_id) IN ( SELECT v_nr, MIN( v_id ) FROM vertrag GROUP BY v_nr )
Wie ich das für jeden Vertrag einzeln mache, ist mur klar, mich würde interessieren, ob uns wie ich das mit einer Script für alle Verträge gleichzeitig erledigen kann.

Ähm ja, aber wozu war das nötig, eigentlich macht man sich dafür eine View, die nur die aktuellen Einträge zeigt und schreibst deine Änderungen (UPDATE, DELETE, INSERT) in diese View. Die INSTEAD OF Trigger kümmern sich dann um diese historische Protokollierung. Ein Tool wird dafür nicht benötigt.
Das Tool ist nicht nur dafür da, es gibt noch jede Menge andere Aufgaben, die vom Tool erledigt werden.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#12

AW: SQL Server: Mehrere Datensätze gleichzeitig vergleichen und ändern

  Alt 17. Okt 2014, 12:43
So solltest du jeweils den ersten Wert bekommen, den du dann in alle anderen Datensätze reinpassten musst
SQL-Code:
SELECT v_id, v_nr, v_from
FROM vertrag
WHERE (v_nr, v_id) IN ( SELECT v_nr, MIN( v_id ) FROM vertrag GROUP BY v_nr )
Seit wann geht das denn? Ich meine ein 'IN' mit einem 2-Tupel?

PS: Das könnte so gehen (ungetestet)
SQL-Code:
Update T
  set Datum = M.minDatum

from Vertraege T
join (
  select v_id, v_datum
    from Vertraege v
         join (select v_id, min (v_nr) as minNr from Vertraege) m
           on v.v_id=m.v_id and v_nr = m.minNr
  ) s
  on T.v_id = s.v_id
Das innerste Select 'm' erstellt für alle v_id die kleineste v_nr (als minNr)
Das wird dann mit den Verträgen verknüpft, um für jede v_id das Datum der kleinsten v_nr zu bekommen (s)
Und das wird dann als Quelle für das Update verwenden

Müsste funzen

Geändert von Dejan Vu (17. Okt 2014 um 12:52 Uhr)
  Mit Zitat antworten Zitat
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.166 Beiträge
 
Delphi 10 Seattle Professional
 
#13

AW: SQL Server: Mehrere Datensätze gleichzeitig vergleichen und ändern

  Alt 17. Okt 2014, 17:41
Vielen Dank, jetzt klapt es!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 18:38 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