SQL MySQL Query Text austauschen

Crimvel

Lt. Commander
Registriert
Feb. 2011
Beiträge
2.031
Hallo zusammen,

Ich hab eine Fragen ob mir jemand helfen kann das SQL Query richtig zu formulieren.

Es geht darum das über eine komplette Tabelle » weiterlesen mit » Continuar leyendo
auszutauschen:

Code:
UPDATE `datenbank`.`janm_content` SET `attribs` = '
show_title= 
link_titles= 
show_intro= 
show_section= 
link_section= 
show_category= 
link_category= 
show_vote= 
show_author= 
show_create_date= 
show_modify_date= 
show_pdf_icon= 
show_print_icon= 
show_email_icon= 
language= keyref= 
readmore=» weiterlesen';

das readmore soll das weiterlesen mit Continuar leyendo ersetzt werden.

Jemand eine idee.
 
Najo, wenn du über die komplette Tabelle einen Wert Updaten willst, brauchst du halt einfach keine WHERE Bedingung, dann werden alle Zeilen für das Update selektiert. Wenn du aber nur die Werte der Spalte "readmore" ersetzen willst, darfst du natürlich nach dem SET nur diese Spalte aufführen.
 
Hi,

1. Hast du ernsthaft eine Spalte "attribs" in der du alle Werte einfach so drinstehen hast?
2. Falls nein und du hast eine Spalte "readmore" dann versuche

UPDATE `datenbank`.`janm_content` SET `readmore` = 'Continuar leyendo' WHERE `readmore` = 'weiterlesen'

Analog zu

UPDATE items,month SET items.price=month.price WHERE items.id=month.id, hier zu finden.

VG,
Mad
 
Ja leider das ist ja mein Problem ich hab mir die Struktur ned überlegt aber ich muss damit arbeiten.

Zum besseren Verständnis hab ich das mal angehängt so sieht die spalte attribs aus:
 

Anhänge

  • attrib.jpg
    attrib.jpg
    35,6 KB · Aufrufe: 176
Hi,

wow...sowas habe ich persönlich auch noch nicht gesehen. Ändern geht nicht mehr weil?

Dir muss klar sein, wenn du deine Version benutzt dann überschreibst du natürlich alle anderen "attribs". Versuch die zuerst auszulesen und dann zu aktualisieren.

hab mir die Struktur ned überlegt

Das ist sehr schmeichelhaft formuliert ;)

VG,
Mad
 
Ne ich meine das ist nicht meine Datenbank sondern die eines Kunden und ich muss damit jetzt arbeiten.
 
Hi,

dann schlag dem Kunden doch bitte mal vor, die Struktur zu ändern bevor es zu spät ist. "Atomarer Aufbau" und "Datenbanknormalisierung" als Stichwort. Was nützt eine Tabelle wenn alles in einer Spalte steht?

Wie gesagt, du musst eben die Werte (falls schon welche vorhanden sind) auslesen und dann wieder in deinem Updatestatement verwenden, damit du nicht alles überschreibst.

VG,
Mad
 
Dafür ist es zuspät das ist ein "laufendes" System. Mit ein paar 100 Beiträgen...
 
Sowas in der Art?

Hochkommata stimmen gerade noch nicht so, ist abseits aller mysql server geschrieben und gänzlich ungetestet, sollte aber in die richtige Richtung weisen

Code:
update `datenbank`.`janm_content` set `attribs` = replace(`attribs`, ‘readmore=» weiterlesen’, ‘readmore=» Continuar leyendo’);

Kommentare zu Datenbankstruktur konnte ich mir nur ganz schwer verkneifen ;)
Aber Änderungen wären natürlich auch in live-systemen mit 100en Beiträgen noch möglich. Werden nur wahrscheinlich von Kunden nicht bezahlt, die schon zu "geizig" für einen vernünftigen Datenbank-Entwickler waren ;)
 
Hi,

Mit ein paar 100 Beiträgen

Finde ich zwar noch nicht zu spät aber nun gut, wenn du / der Kunde das so sehen kann man wohl nichts mehr machen.

Aber schon alleine was so ein kleines Update jetzt mit der Struktur für einen Aufwand macht sollte klar machen, dass das keine Struktur ist sondern einfach nur falsch.

Die Empfehlung bleibt die Gleiche wie die von OhNoIKilledMyHD.

VG,
Mad
 
Dann wird da mit reinem SQL nicht viel möglich sein.
Du musst den String den du ausliest dann "zerpflücken" und wieder mit den richtigen werten zusammenbauen.

für das Select-Statement würde ich where `attribs` like %weiterlesen% verwenden, damit du nicht alle Werte aus der DB holst und verarbeitest.
 
Bevor hier weiter alle mit dem Finger auf mich zeigen und den Nelson machen:

Datenbank war schon vor mir da ist ein uraltes JoomlaCMS Kunde bezahlt keinen Umbau/Update. (Sturer Bock)

So bin ich halt gezwungen das zuändern.
 
Sieht für mich nach nem Joomla System aus!?

Joomla stellt für sowas Funktionen bereit und speichert die Parameter z.b. in einem JSON String.

http://docs.joomla.org/Component_parameters

Den String weiterlesen würde ich mit einer Language File im Frontend überschreiben.
 
Es wirft dir auch keiner vor - Projekte wachsen halt historisch/hysterisch :)
Versuch es einfach mit dem angesprochen UPDATE mit REPLACE wie es OhNoIKilledMyHD schon angesprochen hat.

@Fipsi16: Ob er sich alle 100 Einträge holt oder man versucht mit dem LIKE noch Performance herauszuholen (ich glaube das wird eh keinen Unterschied machen) ist erst einmal nicht wichtig für die Problemlösung
 

Ähnliche Themen

Zurück
Oben