Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL-Befehl vervollständigen? (https://www.delphipraxis.net/180606-sql-befehl-vervollstaendigen.html)

AlexII 2. Jun 2014 18:26

Datenbank: SQLite • Version: 3 • Zugriff über: SQLiteSimpleDelphi-Wrapper

SQL-Befehl vervollständigen?
 
Hallo,

ich habe in meiner DB eine Spalte mit einem Datum. Nun möchte ich das Datum in eine andere Spalte "kopieren" und ein String dazu fügen.

ID | Datum | Datum2
1 | 1.1.14 | 1.1.14: Angelegt
2 | 4.6.14 | 4.6.14: Angelegt
...
7 | 7.7.14 | 7.7.14: Angelegt

Irgendwie klappt es bei mir nicht, hab bereits folgendes, aber ist wohl nicht ganz richtig.

Code:
UPDATE tabelle SET datum2 = (SELECT datum FROM tabelle WHERE id = i) + ': Angelegt' WHERE id = i
Und noch eine Frage wäre, wie kann ich i in einem SQL-Befehl hochzählen?

milchbrötchen 2. Jun 2014 18:35

AW: SQL-Befehl vervollständigen?
 
das sollte funktionieren:

Code:
UPDATE tabelle SET datum2 = concat(datum,': Angelegt') WHERE id = i
hochzählen in einer einzigen sql anweisung geht. entweder das where weglassen und das update für alle datensätze ausführen, oder ausgewählte ids gleichzeitig mit "where id in (1,2,7,9)"

himitsu 2. Jun 2014 18:47

AW: SQL-Befehl vervollständigen?
 
Jupp, das gleiche WHERE in der selben Tabelle hätte einem zeigen können, daß man sich das SubSelect sparen kann, da man bereits im selben Datensatz ist.

Noch eindeutiger wird es, wenn man das WHERE des SubSelects entsprechend anpasst.
SQL-Code:
UPDATE tabelle SET datum2 = (SELECT x.datum FROM tabelle AS x WHERE x.id = tabelle.id) + ': Angelegt' --WHERE id = i

UPDATE tabelle SET datum2 = datum + ': Angelegt' --WHERE id = i

AlexII 2. Jun 2014 18:50

AW: SQL-Befehl vervollständigen?
 
Ok, aber was ist concat? Ich arbeite mit SQLite, das kennt wohl den Befehl nicht.

Code:
no such function: concat

AlexII 2. Jun 2014 18:56

AW: SQL-Befehl vervollständigen?
 
Zitat:

Zitat von himitsu (Beitrag 1261085)
SQL-Code:
UPDATE tabelle SET datum2 = datum + ': Angelegt'

Thx...

Komisch nur, dass mit
Code:
UPDATE tabelle SET datum2 = datum
das Datum vollständig kopiert wird, aber mit

Code:
UPDATE tabelle SET datum2 = datum + ': Angelegt'
nur der Tag und der Monat... der Rest fehlt. :gruebel:

EarlyBird 2. Jun 2014 19:44

AW: SQL-Befehl vervollständigen?
 
Versuchs mal mit:
Code:
UPDATE tabelle SET datum2 = datum || ': Angelegt'

AlexII 2. Jun 2014 20:00

AW: SQL-Befehl vervollständigen?
 
Ja... es klappt, danke euch!

mkinzler 2. Jun 2014 20:41

AW: SQL-Befehl vervollständigen?
 
Wobei ich das Feld nicht in die Datenbank schreiben würde (da redundant) sondern erts bei der Abfrage generieren würde.

AlexII 2. Jun 2014 21:10

AW: SQL-Befehl vervollständigen?
 
Zitat:

Zitat von mkinzler (Beitrag 1261101)
Wobei ich das Feld nicht in die Datenbank schreiben würde (da redundant) sondern erts bei der Abfrage generieren würde.

Es ging mir eigentlich nur um SQL. Sonst wäre es natürlich richtig.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:46 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