SQL - Update und Select gleichzeitig

Fragen zu allen anderen Programmiersprachen.
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

SQL - Update und Select gleichzeitig

Beitrag von X360 Andy »

Hallo Freunde :)

Ich habe ( mal wieder ) eine SQL Problem, SQL nervt mich extrem da ich nicht wirklich "zwischenspeichern" kann.... ( beispiel mysql ... )


Ich habe folgende Tabelle

Beispiel
ID | Text
1 | EURO 99,00
2 | EURO 100,00
3 | EURO 10,00

Nun soll die Spalte "Text" so geupdatet werden dass das "EURO" zu "€" wird


in pseudo pb code

Code: Alles auswählen

for i = to counteinträge

miteuro$ = getgadgetitemtext(datenbank,i,1)

if left(miteuro$,"EURO ");theoretisch könnte man das auch weglassen ....
ohneuro$ = replacestring$(miteuro$,"EURO","€")
setgadgetitemtext(datenbank,i,ohneuro$,1)
endif

next

Warscheinlich gibt es dafür auch wieder ein total einfach Lösung.....

Die Tabelle Beispiel sollte also nach dem Query so aussehen:

ID | Text
1 | € 99,00
2 | € 100,00
3 | € 10,00


Grüße Andreas
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: SQL - Update und Select gleichzeitig

Beitrag von STARGÅTE »

Code: Alles auswählen

UPDATE Tabelle SET Text = REPLACE(Text, 'EURO', '€')
Aber wenn du nur die Ausgaben ändern willst:

Code: Alles auswählen

SELECT ID, REPLACE(Text, 'EURO', '€') AS Text FROM Tabelle
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: SQL - Update und Select gleichzeitig

Beitrag von DarkDragon »

X360 Andy hat geschrieben:Ich habe ( mal wieder ) eine SQL Problem, SQL nervt mich extrem da ich nicht wirklich "zwischenspeichern" kann.... ( beispiel mysql ... )
Nichtmaterialisierte Views wären eine Lösung zum bloßen Zwischenspeichern. Wenn diese noch vorberechnet werden sollen muss man materialisierte Views nehmen.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Re: SQL - Update und Select gleichzeitig

Beitrag von X360 Andy »

Ich sagte doch ... das wird bestimmt wieder ganz einfach funktionieren :)

Danke dir vielmals :allright:

@DarkDragon

du meinst z. B. "b AS c....where d = c" ?
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: SQL - Update und Select gleichzeitig

Beitrag von DarkDragon »

X360 Andy hat geschrieben:Ich sagte doch ... das wird bestimmt wieder ganz einfach funktionieren :)

Danke dir vielmals :allright:

@DarkDragon

du meinst z. B. "b AS c....where d = c" ?
Nein, ich meine sowas:
http://sql.1keydata.com/de/sql-create-view.php
http://dev.mysql.com/doc/refman/5.1/de/create-view.html

[EDIT]
Damit kannst du dann praktisch slicing-ergebnisse "zwischenspeichern" (einmal wirklich - materialisiert und einmal nur halb - wird dauernd neu berechnet bei jedem select aus dem view).
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Re: SQL - Update und Select gleichzeitig

Beitrag von X360 Andy »

Sehr schön danke :)
SirMatti74
Beiträge: 37
Registriert: 08.11.2009 09:12

Re: SQL - Update und Select gleichzeitig

Beitrag von SirMatti74 »

Unabhängig der Antworten zur gestellten Frage, die STARGÅTE und DarkDragon geliefert haben, stellen sich bei mir (der sich mehrmals im Monat mit Chrystal Reports berufbedingt herum schlägt) die Nackenhaare auf, wenn ich in einem RDBMS einen Währungswert (der mithin ein numerischer Wert ist) als Text hinterlegt sehe. Noch schlimmer wird es, wenn Wert und Einheit wie im vorliegenden Beispiel vermengt wird und am Ende ein nicht auswertbarer Kauderwelsch heraus kommt.

Numerischer Wert und die Einheit gehören immer getrennt voneinander abgelegt (wenn's die Aufgabenstellung erfordert, sogar mittels einer gesonderten Einheiten-Tabellen mit beispielsweise den dazugehörigen Umrechnungsfaktoren)! Oder man läßt die Einheit der Einfachheit halber komplett weg, wenn sie sowieso von vorherein fest steht (z.b. wenn grundsätzlich Währungsangaben in Euro erfolgen).

Warum das Ganze? Versucht einfach mal, ein Bericht/Formular (es genügt sogar eine einfache Abfrage) zu erstellen , in dem einige Währungswerte addiert, subtrahiert oder sonst wie berechnet werden sollen und schon stößt ihr an die Grenzen, wenn numerische Werte nicht als solche in der Datenbank vorliegen. Gleiches trifft allerdings zu, wenn andere Werte wie zum Beispiel Datum oder Zeitwerte nicht in dem entsprechenden Format gespeichert sind.

Schöne Grüße...
Benutzeravatar
ralle
Beiträge: 88
Registriert: 29.11.2004 17:50
Wohnort: Berlin

Re: SQL - Update und Select gleichzeitig

Beitrag von ralle »

SirMatti74 hat geschrieben:Numerischer Wert und die Einheit gehören immer getrennt voneinander abgelegt
Da ich gerade in meiner Bachelorarbeit ebenfalls eine Datenbankanwendung entwickle möchte ich nochmals diese Aussage unterstreichen! Du solltest ggf. die Werte auf 2 Tabellen teilen. Eine für die Zahlen, die Andere für die Einheit:

Tabelle Currency
ID (PrimaryKey long)| Unit (text) | Mark (text)
1 | Euro | €

Tabelle Values
ID (PrimaryKey long) | currencyID (ForeignKey long) | Value (double)
1 | 1 | 100.00
2 | 1 | 9.32
...

Hierbei zeigt der ForeignKey currencyID aus der Tabelle values auf einen Eintrag aus der Tabelle Currency. Solltest du nun neue Währungen hinzufügen, oder den Text davon ändern wollen, musst du dies nur zentral an einer Tabelle tun.

Das wäre eine saubere Trennung und würde spätere Verrechnungen erleichtern.

mfG
Ralle
Benutzeravatar
Blackskyliner
Beiträge: 532
Registriert: 28.07.2005 00:54
Wohnort: /home/Blackskyliner/

Re: SQL - Update und Select gleichzeitig

Beitrag von Blackskyliner »

Wobei eine Währung in dem Datenbank spezifischem "Currency" Typen gespeichert werden sollte, sofern einer vorhanden ist :)
Keine meiner Antworten ist endgültig, es kann passieren, dass ich den so eben geposteten Beitrag noch mehrmals ändere, um Doppelposts zu umgehen.
_________________
Purebasic Windows 7 x64 & Linux (Ubuntu 10.04LTS) 4.50[x64|x86] Nutzer
_________________
Projekte: YAED - Yet another Event Dispatcher
Antworten