Seite 1 von 1

SQL - Update und Select gleichzeitig

Verfasst: 22.06.2010 17:01
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

Re: SQL - Update und Select gleichzeitig

Verfasst: 22.06.2010 17:18
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

Re: SQL - Update und Select gleichzeitig

Verfasst: 22.06.2010 17:43
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.

Re: SQL - Update und Select gleichzeitig

Verfasst: 22.06.2010 17:48
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" ?

Re: SQL - Update und Select gleichzeitig

Verfasst: 22.06.2010 17:50
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).

Re: SQL - Update und Select gleichzeitig

Verfasst: 22.06.2010 20:20
von X360 Andy
Sehr schön danke :)

Re: SQL - Update und Select gleichzeitig

Verfasst: 25.06.2010 00:20
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...

Re: SQL - Update und Select gleichzeitig

Verfasst: 25.06.2010 09:28
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

Re: SQL - Update und Select gleichzeitig

Verfasst: 26.06.2010 14:01
von Blackskyliner
Wobei eine Währung in dem Datenbank spezifischem "Currency" Typen gespeichert werden sollte, sofern einer vorhanden ist :)