BMW Einzylinder-Forum

ANDERE THEMEN => OFF - TOPIC => Thema gestartet von: admin am 18 April 2022, 20:20:24

Titel: Frage an die Datenbank-Spezialisten
Beitrag von: admin am 18 April 2022, 20:20:24
Mal eine Frage an die SQL-Profis unter Euch:

Ich habe in einer Datenbank eine Tabelle mit ganz vielen Spalten.
Jetzt möchte ich in der Spalte "cust_land" (für: "custom Land"-Settings im User-Profil) alle Begriffe (z.B. "Alemanha") suchen und mit einem Anderen ersetzen (zb. "Deutschland").
Wie würde denn der korrekte Begriff dafür lauten?

Mein SQL ist leider echt nicht so gut. Habs mit folgendem Befehl probiert:

SELECT themes REPLACE(cust_land, 'Alemanha', 'Deutschland')

Leider funzt das nicht > Fehlermeldung. Was mache ich falsch?

Danke und viele Grüße
Karl
Titel: Aw: Frage an die Datenbank-Spezialisten
Beitrag von: kahlo am 18 April 2022, 20:44:51
Hi Karl,

Ich kenne deine DB nicht, deshalb ohne Gewähr. MySQL würde sowas schlucken:

UPDATE themes SET cust_land = REPLACE(cust_land, "Alemanha", "Deutschland")

Viel Glück,
Kahlo.
Titel: Aw: Frage an die Datenbank-Spezialisten
Beitrag von: Hansdampf am 18 April 2022, 21:07:42
Update themes Set cust_land = 'Deutschland' where cust_land = 'Alemanha'
Titel: Aw: Frage an die Datenbank-Spezialisten
Beitrag von: Karl am 18 April 2022, 21:10:56
Dankeschön :)
Werde ich morgen früh gleich mal ausprobieren sobald ich wieder online bin
Titel: Aw: Frage an die Datenbank-Spezialisten
Beitrag von: admin am 19 April 2022, 13:58:45
Zitat von: Hansdampf am 18 April 2022, 21:07:42Update themes Set cust_land = 'Deutschland' where cust_land = 'Alemanha'
Hat leider nicht geklappt. Folgende Meldung erscheint: "#1054 - Unbekanntes Tabellenfeld 'cust_land' in field list".

Ich hatte vorher von der Tabelle ein SQL-Backup gezogen. Der Aufbau ist wie folgt.

CREATE TABLE `themes` (
  `id_member` mediumint(8 ) NOT NULL DEFAULT '0',
  `id_theme` tinyint(4) UNSIGNED NOT NULL DEFAULT '1',
  `variable` varchar(255) NOT NULL DEFAULT '',
  `value` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

--
-- Daten für Tabelle `themes`
--

INSERT INTO `themes` (`id_member`, `id_theme`, `variable`, `value`) VALUES

(2, 1, 'cust_gender', '{gender_1}'),
(2, 1, 'cust_bundes', 'Hessen'),
(2, 1, 'cust_land', 'Deutschland'),
(2, 1, 'cust_ort', 'Offenbach'),
(2, 1, 'cust_plz', '63065'),
(2, 1, 'calendar_start_day', '1'),
(5, 1, 'cust_bundes', 'Bayern'),
(5, 1, 'cust_gender', '{gender_1}'),
(5, 1, 'cust_land', 'Deutschland'),
(5, 1, 'cust_ort', 'Herzogenaurach'),
(11, 1, 'cust_bundes', 'Hessen'),
(11, 1, 'cust_gender', '{gender_1}'),
(11, 1, 'cust_land', 'Deutschland'),
(11, 1, 'cust_ort', 'Münster'),

Die in fett markierten Datensätze möchte ich gern auslesen / ersetzen.

Viele Grüße, Karl
Titel: Aw: Frage an die Datenbank-Spezialisten
Beitrag von: Rütz am 19 April 2022, 15:36:16
Ohne irgendeine Ahunug zu haben... ;D  :-*
Könnte es sein, dass auch in dem Befehl 'cust_land' statt cust_land stehen muss?
Also:
Update themes Set 'cust_land' = 'Deutschland' where 'cust_land' = 'Alemanha'
Titel: Aw: Frage an die Datenbank-Spezialisten
Beitrag von: admin am 19 April 2022, 15:38:24
Wenn ich noch ne Spur an fundiertem Wissen in diesem Bereich hätte, würde ich dir entweder widersprechen oder dir Recht geben ;D Ich glaube die Problematik hier liegt darin, dass die Daten(-felder) ich sags mal "plump" in einer Reihe liegen (Kommasepariert) und nicht einzelne Spalten sind ...
Titel: Aw: Frage an die Datenbank-Spezialisten
Beitrag von: admin am 19 April 2022, 15:40:22
Die Datenbank gibt da eine eindeutige Antwort:

#1064 - Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch nachschlagen bei ''cust_land' = 'Deutschland' where 'cust_land' = 'Alemanha'' in Zeile 1
Titel: Aw: Frage an die Datenbank-Spezialisten
Beitrag von: Rütz am 19 April 2022, 15:50:05
Schade. Wäre auch zu einfach gewesen...
Titel: Aw: Frage an die Datenbank-Spezialisten
Beitrag von: admin am 19 April 2022, 15:51:12
Mal abwarten was die Profis sagen ...

By the way - ich krieg seit der Umstellung auf die neue Forenversion unter Windows kleinen PopUps die mir sagen dass ich eine neue Nachricht im Forum erhalten habe ... nice!
Titel: Aw: Frage an die Datenbank-Spezialisten
Beitrag von: kahlo am 19 April 2022, 16:14:14
Und den hast du dich nicht getraut? Genau so und nicht mit irgendwelchen anderen Apostrophen?

UPDATE themes SET cust_land = REPLACE(cust_land, "Alemanha", "Deutschland")
Titel: Aw: Frage an die Datenbank-Spezialisten
Beitrag von: admin am 19 April 2022, 16:28:29
Ja na klar hab ich das schon ausprobiert - hat leider nichts gebracht.
Frisch aus der PHPmyadmin-Bäckerei folgende Meldung:

#1054 - Unbekanntes Tabellenfeld 'cust_land' in field list
hab auch schon weiter herum gespielt...

UPDATE themes SET variable = REPLACE('cust_land', 'Alemanha', 'Deutschland')

Wenn ich diesen Befehl per "Abfrage simulieren" starte, dann erhalte ich eine positive Rückmeldung (keinen Fehler!), die besagt:  " Gefundene Zeilen: 21027"

Ich weiß aber dass der Datensatz mit "Alemanha" nur in einer einzigen Zeile vorkommt. Deswegen weiß ich jetzt nicht WAS der o.g. Befehl machen würde. Deswegen lasse ich das lieber mal.
Titel: Aw: Frage an die Datenbank-Spezialisten
Beitrag von: Karl am 20 April 2022, 20:31:45
Nachtrag:

Ich hab es anders gelöst -> Export der Tabelle in eine SQL-Datei. Editieren der Datei mit Notepad. Danach Einspielen der Datei