Update alt + neu Anfängerfrage
Simone
- datenbank
HI,
Ich stehe vor einen Problem und bitte um Hilfe.
Ich möchte eine SQL Anweisung formulieren wo ich an den Inhalt einer Spalte einfach etwas anfüge.
Beispiel:
Die Spalte word hat den Inhalt(alt):
'und jetzt lerne ich mysql'
und dort soll angehängt werden(neu)
' und das kann doch wirklich nicht so schwer sein'
so das der Update-Satz dann so aussieht:
'und jetzt lerne ich mysql und das kann doch wirklich nicht so schwer sein'
Ich möchte jedoch nicht den Datensatz auslesen um ihn dann als String zusammenzusetzen!
Das dürfte doch irgendwie machbar sein?
an den alten Datenbestand wird ein neuer angehangen
$SQL = "UPDATE word SET alt+$neuword WHERE word = '$such'";
Danke Euch
Simone
Hi,
Ich möchte jedoch nicht den Datensatz auslesen um ihn dann als String zusammenzusetzen!
Das dürfte doch irgendwie machbar sein?
klar, kein Problem.
$SQL = "UPDATE word SET alt+$neuword WHERE word = '$such'";
Die Syntax lautet: "UPDATE tabelle SET spalte=wert ...", nicht "... SET wert ...". Dies sagt Dir aber auch die Dokumentation Deines DBMS.
Cheatah
Hi,
Danke der Syntax war nicht ganz korrekt.
Genau das ist es jedoch nicht.
Ich überschreibe den alten Spaltenwert mit dem neuen Wert.
Ich möchte jedoch den Spaltenwert erhalten und den neuen Wert anfügen. Ohne den alten Wert vorher auslesen zu müssen.
Simone
Hi,
Danke der Syntax war nicht ganz korrekt.
Genau das ist es jedoch nicht.
doch, genau das ist es :-)
Ich möchte jedoch den Spaltenwert erhalten und den neuen Wert anfügen. Ohne den alten Wert vorher auslesen zu müssen.
Und wie erhälst Du den Spaltenwert?
Cheatah
Hi,
Irgendwie stehe ich auf zwei linken Füßen ;O)
SQL = "UPDATE Tabelle SET Feld
='$eingabe' WHERE ID '$myID' ";
Am Beispiel:
Update überschreibt in der Spalte 'Feld' den Datensatz mit der Variable $eingabe.
Dabei wird nicht der alte Datensatz aus der Spalte Feld erhalten.
bzw. $eingabe an diesen Datensatz angefügt.
Und genau das möchte ich.
Die Update Funktion soll den alten Wert der Spalte Feld auslesen und mit dem neuen Wert zusammen abspeichern
Als String:
$myupdate = $alterfeldwert.$neuerfeldwert;
Simone
hi,
Update überschreibt in der Spalte 'Feld' den Datensatz mit der Variable $eingabe.
Dabei wird nicht der alte Datensatz aus der Spalte Feld erhalten.
bzw. $eingabe an diesen Datensatz angefügt.Und genau das möchte ich.
dann schau dir bitte die zeichenketten-funktionen deiner DB an, für mysql bspw. http://dev.mysql.com/doc/mysql/de/String_functions.html
da gibt es beispielsweise CONCAT() zum verbinden zweier strings.
gruß,
wahsaga
hi,
wahsaga
CONCAT()
scheint es zu sein was ich suche.
Danke Dir
Simone
HI,
Jetzt wird es richtig schwer!
Hier der Mysql Syntax;
$SQL = "UPDATE word SET wo_id = CONCAT_WS(' ',wo_id ,$insert_id) WHERE keyword = '$insert_array[0]' ";
$result = @mysql_query( $SQL, $db);
Wie kann ich jetzt in der WHERE Bedingung eine Formulierung einbauen
das nur Datensätze update werden die nicht im Feld wo_id vorkommen?
also $insert_id darf nicht im Feld wo_id vorkommen !
gibt es sowas wie ein Regex Befehl um das Feld wo_id während der update funktion auszuwerten?
per echo sieht ein Update Datensatz
so aus:
UPDATE word SET wo_id = CONCAT_WS(' ',wo_id ,15) WHERE keyword = 'hallo'
das Feld wo_id besteht aus Zahlen und als Trenner dient das Leerzeichen
Danke
Simone
hi,
Jetzt wird es richtig schwer!
und deine ungenauen fragestellungen machen es auch nicht einfacher.
$SQL = "UPDATE word SET wo_id = CONCAT_WS(' ',wo_id ,$insert_id) WHERE keyword = '$insert_array[0]' ";
$result = @mysql_query( $SQL, $db);Wie kann ich jetzt in der WHERE Bedingung eine Formulierung einbauen
das nur Datensätze update werden die nicht im Feld wo_id vorkommen?
in einem feld kommt kein datensatz "vor".
also $insert_id darf nicht im Feld wo_id vorkommen !
steht in wo_id ebenfalls nur eine ID? dann wäre ein simpler vergleich auf ungleichheit vollkommen ausreichend.
gibt es sowas wie ein Regex Befehl um das Feld wo_id während der update funktion auszuwerten?
auf die seite mit den string-funktionen von mysql wurdest du bereits hingewiesen - probierst du es bitte mal mit selber nachlesen?
per echo sieht ein Update Datensatz
so aus:
UPDATE word SET wo_id = CONCAT_WS(' ',wo_id ,15) WHERE keyword = 'hallo'das Feld wo_id besteht aus Zahlen und als Trenner dient das Leerzeichen
klingt nach einer suboptimalen datenstruktur - vermutlich solltest du dich näher mit normalisierung befassen.
gruß,
wahsaga
hi,
Die Problemstellung ist:
Ich möchte einen Vor-Index für eine Suchfunktion modellieren.
Das klappt soweit auch ganz gut.
Zu jeden vorkommenen (Wort) im Content wird die dazugehörige ID in die DB eingespielt. Jedes wort wird nur einmal angelegt.
Wiederhole ich jedoch den Updatevorgang
erscheinen doppelte ID Einträge zum entsprechenden Wort
jetzt suche ich nach einer WHERE Bedingung in der Update Funktion die das verhindert.
Also:
Wenn die ID in dem Feld wo_id vorkommt dann soll nicht update(t) werden.
das wo Feld beinhaltet Zahlen ID's Beispiel (23 458 23)
Meine Versuch:
$SQL = "UPDATE words SET wo_id = CONCAT_WS(' ',wo_id ,$insert_array[1]) WHERE (keyword = '$insert_array[0]') AND (FIND_IN_SET('$insert_array[1]',wo_id)== 0) ";
CONCAT_WS(' ',wo_id ,$insert_array[1])
fügt die ID an den vorhandenen an
(keyword = '$insert_array[0]')
sucht den entsprechenden Datensatz
Beispiel:
keyword = 'hallo'
FIND_IN_SET('$insert_array[1]',wo_id)== 0)
Bedingung soll einen Filter definieren wenn nicht diese wort als ID erfast wurde.
Und hier scheitert es noch!
Leider bringt mich die Mysql Doku nicht weiter.
Simone
hi,
Danke an Alle!
war blos ein kleiner Fehler im Syntax
Simone