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
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
@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
@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
