AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi [SQL, firebird] Werte von zwei Spalten tauschen
Thema durchsuchen
Ansicht
Themen-Optionen

[SQL, firebird] Werte von zwei Spalten tauschen

Ein Thema von BlueStarHH · begonnen am 9. Jul 2007 · letzter Beitrag vom 16. Jul 2007
Antwort Antwort
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hannover-Hainholz
801 Beiträge
 
Delphi 11 Alexandria
 
#1

[SQL, firebird] Werte von zwei Spalten tauschen

  Alt 9. Jul 2007, 17:07
Datenbank: Firebird • Version: 1.5 • Zugriff über: IBX: TIBQuery
Wie kann ich per SQL die Werte von zwei Spalten tauschen? Folgendes habe ich probiert:

SQL-Code:
update buchung
set Konto = :OLD_Gegenkonto, Gegenkonto = :OLD_Konto
Es erscheint die Fehlermeldung, obwohl KONTO keine Nullwerte enthält:
validation error for column KONTO, value "*** null ***"
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: [SQL, firebird] Werte von zwei Spalten tauschen

  Alt 9. Jul 2007, 17:33
Und wenn Du die Zeichenfolge ":OLD_" mal weglässt?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: [SQL, firebird] Werte von zwei Spalten tauschen

  Alt 9. Jul 2007, 22:13
Hallo,

update table_X
set field='bla1', fiel2='bla2
???
where id=was_wees_icke


Heiko
Heiko
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: [SQL, firebird] Werte von zwei Spalten tauschen

  Alt 9. Jul 2007, 22:16
oder ne kleine SP
Markus Kinzler
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#5

Re: [SQL, firebird] Werte von zwei Spalten tauschen

  Alt 9. Jul 2007, 22:21
Zitat von hoika:
das geht nur über 2 Update-Queries
Ich bin mir jetzt nicht so sicher wie es hier mit Firebird im Speziellen aussieht.
Aber generell wird bei einem Update die rechte Seite von vor dem Update genommen.
SQL-Code:
update Buchung
set Konto = Gegenkonto,
    Gegenkonto = Konto
WHERE BlablablB
Wenn das nicht geht, dann das
SQL-Code:
update Buchung t
set (Konto, Gegenkonto) = (SELECT Gegenkonto, Konto
                           FROM Buchung
                           WHERE ID = t.ID)
WHERE BlablablB
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hannover-Hainholz
801 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: [SQL, firebird] Werte von zwei Spalten tauschen

  Alt 16. Jul 2007, 16:00
Zitat von DeddyH:
Und wenn Du die Zeichenfolge ":OLD_" mal weglässt?
Dann habe ich ein beiden Feldern die selben Werte stehen. Klappt also nicht.
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hannover-Hainholz
801 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: [SQL, firebird] Werte von zwei Spalten tauschen

  Alt 16. Jul 2007, 16:03
Code:
update Buchung
set Konto     = Gegenkonto,
    Gegenkonto = Konto
WHERE BlablablB
Klappt nicht, da haben beide Felder dann die selben Werte.

Code:
update Buchung t
set (Konto, Gegenkonto) = (SELECT Gegenkonto, Konto
                           FROM  Buchung
                           WHERE ID = t.ID)
WHERE BlablablB
Klappt nicht. Syntaxfehler: Die Klammer nach set stört. Wenn die gelöscht wird, stört Firebird das Komma zwischen Konto, Gegenkonto.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: [SQL, firebird] Werte von zwei Spalten tauschen

  Alt 16. Jul 2007, 16:05
SQL-Code:
update
    Buchung t
set
    Konto = (SELECT Gegenkonto
                           FROM Buchung
                           WHERE ID = t.ID),
    Gegenkonto =(SELECT Konto
                           FROM Buchung
                           WHERE ID = t.ID)
WHERE BlablablB
[Edit: überflüssiges , entfernt]
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: [SQL, firebird] Werte von zwei Spalten tauschen

  Alt 16. Jul 2007, 18:03
Ich hätte nicht gedacht, dass Firebird sich da so zickig hat. Vielmehr war ich davon ausgegangen, was Elvis auch schon gesagt hat:
Zitat von Elvis:
Aber generell wird bei einem Update die rechte Seite von vor dem Update genommen.
Man lernt eben nie aus.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hannover-Hainholz
801 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: [SQL, firebird] Werte von zwei Spalten tauschen

  Alt 16. Jul 2007, 18:24
Die Lösung von mkinzler im Beitrag #8 klappt, wenn man das Komma hinter Gegenkonto entfernt. Danke an alle!
  Mit Zitat antworten Zitat
Antwort Antwort


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 22:50 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