[mySQL] suche bestimmten Befehl um Daten zu ersetzen...

Eliah

Cadet 4th Year
Registriert
Okt. 2004
Beiträge
98
Ich hab in meiner Datenbank eine Tabelle mit folgender Bezeichnung:

_posts


jetzt möchte ich einen Bestimmten Inhalt dieser Tabelle gegen einen anderen austauschen. Also z.B. das Wort "Apfel" gegen "Birne". Welchen Befehl muss ich dazu über mySQLAdmin unter SQL Befehl eingeben, damit die Datenbanktabelle automatisch durchsucht und das gewünschte ersetzt wird.

Danke für die Hilfe!


PS: Evtl. Gibt es ja auch einen Befehl wie ich die ganze Datenbank durchsuchen kann und nicht nur eine einzelne Tabelle. das währe natürlich besser...
 
Zuletzt bearbeitet:
Mach es einfach mit UPDATE ... WHERE ...=...

So in der Art mach ich das. Mit dem WHERE lässt du die stelle in der Datenbank raussuchen und mit Update kannste ein bestimmtes Feld oder auch mehrere ersetzen. Is relativ einfach.
 
Willst du einen kompletten Text ersetzen, oder ein Word in einem bestimmten Text in dieser Tabelle?
 
Ich würde gerne ein Wort - genauer gesagt eine Homepageadresse die sich geändert hat - durch eine neue ersetzen. Und das in der Gesammten Datenbank. also in sämtlichen Tabellen.

E müsste also ein Befehl sein mit dem automatisch alle Tabellen durchsucht werden um den Eintrag zu ersetzten...
 
Ich wuerde mal sagen das geht nicht, denn woher soll SQL wissen, in welchen Tabellen und unter welchen Keys es diesen Datensatz zu suchen hat?

Eine query hat ja die Form (wie oben schon gepostet und falls ich nicht irre:))

update tabelle set 'Ausdruck1' where key= 'Ausdruck2'


Eine Moeglichkeit waeren allenfalls kaskadierte Updates (falls mySQL das unterstuetzt, ich habe bislang nur mit MSSQL zu tun), falls 'Ausdruck2' als primaerer Key existiert. Dann brauchst du nur den primaeren Key zu updaten und es werden automatisch in allen Tabellen die Verweise auf diesen Key mit geupdatet.


Alles ohne Gewaehr, ich nutze SQL nur fuer den Hausgebrauch und bin da kein Profi drin.:D
 
Hallo,

einfach ein update machen.

UPDATE tabellenname
SET feldname = 'neuerInhalt'
WHERE feldname = 'alterInhalt';

Bis denn
Hurga
 
Ich habe da auch mal eine kleine Frage ;-)

ich schreibe gerade ein Programm unter C#, mit dem ich auf eine Access-Datenbank zugreife. Bisher ist alles schön und gut, doch bei der Update-Anweisung sagt er mir einen Syntax-Fehler in der SQL-Anweisung. Entweder sitze ich heute schon zu lange an dem Projekt oder ich übersehe so etwas....

Das hier ist der von generierte Quelltext:
string sql_anweisung =
"UPDATE Adressenliste SET
(Anrede_titel='"+Anrede+"',
Vorname='"+Vorname+"',
Nachname='"+Name+"',
strasse='"+Strasse+"',
Postleitzahl='"+plz+"',
Ort='"+Ort+"',
Bundesland='"+Bundesland+"'
, Land='"+Land+"',
EmailAdresse='"+Email+"')
WHERE id = '"+Convert.ToInt16(pk)+"';";

Dabei werde alle entsprechenden Informationen an die Methode übergeben.

Das Ergebnis sieht dann so aus:
UPDATE Adressenliste SET (Anrede='Herr', Vorname='Oli', Nachname='meinname', strasse='meine Strasse', Postleitzahl='59423', Ort='Unna', Bundesland='2', Land='4', EmailAdresse='dan@dauerzocken-24.de') WHERE id='25';

Sollte eigentlich so stimmen - zumal alle weiteren Befehle wie Create Table, Select, etc. einwandfrei funktionieren.

Wäre super, wenn da jemand einen Tip hätte. Eigentlich sollte die Syntax so stimmen. Ist das vielleicht ein Access-spezifisches Problem?

Danke für eure Ratschläge.

Freundliche Grüße
DanGermany
 
Tjaa - ich denke, ich habe des Pudels Kern. Die Update Anweisung kann sich scheinbar nur auf eine Spalte beziehen, das sagen mir zumindest alle Suchergebnisse bei google, ausser der, die ich befolgt habe.
Leider bringt es auch nichts, einen durch Semikola getrennten Sammelbefehl zu generieren, was bei einigen Datenbanken wohl funktioniert (habe Oracle damals gelernt). Ergo muss ich wohl den ganzen Update Befehl für jede Spalte einzeln aufrufen :-(

Irgendwie umständlich all das!

Danke für Eure Aufmerksamkeit!

Grüße
DanGermany
 
Dangermany schrieb:
Tjaa - ich denke, ich habe des Pudels Kern. Die Update Anweisung kann sich scheinbar nur auf eine Spalte beziehen, das sagen mir zumindest alle Suchergebnisse bei google, ausser der, die ich befolgt habe.
Leider bringt es auch nichts, einen durch Semikola getrennten Sammelbefehl zu generieren, was bei einigen Datenbanken wohl funktioniert (habe Oracle damals gelernt). Ergo muss ich wohl den ganzen Update Befehl für jede Spalte einzeln aufrufen :-(

Irgendwie umständlich all das!

Danke für Eure Aufmerksamkeit!

Grüße
DanGermany



Hi,

also so dämlich ist nichtmal Access. Nimm mal die Klammern aus dem Ausdruck raus, dann sollte es eigentlich funktionieren. Ist der einzige Punkt der fehlschlagen könnte, es sei denn Access ist sehr typenempfindlich. Dann solltest du noch die Hochkommas in der Where-Klausel entfernen. Mann kann definitiv mehrere Spalten mit einem Befehl updaten.

Code:
string sql_anweisung = 
"UPDATE Adressenliste SET
Anrede_titel='"+Anrede+"',
Vorname='"+Vorname+"',
Nachname='"+Name+"',
strasse='"+Strasse+"',
Postleitzahl='"+plz+"',
Ort='"+Ort+"',
Bundesland='"+Bundesland+"',
Land='"+Land+"',
EmailAdresse='"+Email+"'
WHERE id = "+Convert.ToInt16(pk)+";";

Hab zwar noch nie mit Access und C# gearbeitet, aber so sollte das eigentlich funktionieren.

Ciao
 
Zurück
Oben