ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
633
633
EMPFEHLEN
-
Moin,
ich habe eben folgende Abfrage durchführen wollen, da jemand einen großen Fehler in der Datenbank verursacht hat:
Danach erhielt ich folgende MeldungCode sql:1 2 3 4 5 6
UPDATE `orders` SET `orders`.`orders_status` =1 WHERE `orders_id` IN (SELECT `orders_id` FROM `orders_status_history` WHERE `date_added` >= '2010-11-01 10:15:00')
:
Da der Fehler schnell behoben werden musste, nahm ich die Select-Anweisung einzeln und packte das Resultat in ein SET:MySQL server has gone away
Code sql:1 2 3 4 5 6 7 8
UPDATE `orders` SET `orders`.`orders_status` =1 WHERE FIND_IN_SET(`orders_id`,'28323, 28341, 28444, ... 28555, 28600') != 0
Jedoch bekam ich nur 1 Ergebnis? Kann man FIND_IN_SET auf diese Art und Weise nicht missbrauchen?
Schließlich hat mich folgende Anweisung zum Erfolg geführt:
Code sql:1 2 3 4 5 6
UPDATE `orders` SET `orders`.`orders_status` =1 WHERE `orders_id` =28323 OR `orders_id` =28341 OR `orders_id` =28444 ...
Wäre nett, wenn mir jemand erläutern könnte warum das 1. Query nicht möglich ist und warum FIND_IN_SET den Dienst in meinen Augen verweigert hat.
DankeGruß Steusi
Sollte dir ein Tipp von mir geholfen haben, freue ich mich auch über eine kleine Bewertung.
Und wenn ein Problem gelöst ist, markiere deinen Beitrag bitte als erledigt.
PHP-Code:$fehler = "dummer Tippfehler";
echo("Und ist das Programm noch so klein, es passt immer noch ein ".$fehler". rein!");
-
item: Ich würde wenns geht keine Unterabfrage im WHERE benutzen.
item: Bei FIND_IN_SET solltest du keine Leerzeichen und Zeilenumbrücher verwenden, da SQL diese mitprüft.
Du kannst normalerweise ein einfaches JOIN machen
Code sql:1 2 3 4 5 6 7 8
UPDATE orders LEFT JOIN orders_status_history ON orders.orders_id = orders_status_history.orders_id SET orders.orders_status =1 WHERE orders_status_history.date_added >= '2010-11-01 10:15:00'
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
OK, danke für die Hinweise. Merke immer wieder das ich Update-Query's einfach zu selten anwende, die Verwendung des JOIN innerhalb des UPDATES war mir nicht bekannt, aber klar warum sollte es nicht gehen.
Bei FIND_IN_SET funktioniert es ohne Zeilenumbrüche auch
Gruß Steusi
Sollte dir ein Tipp von mir geholfen haben, freue ich mich auch über eine kleine Bewertung.
Und wenn ein Problem gelöst ist, markiere deinen Beitrag bitte als erledigt.
PHP-Code:$fehler = "dummer Tippfehler";
echo("Und ist das Programm noch so klein, es passt immer noch ein ".$fehler". rein!");
Ähnliche Themen
-
[MS SQL] FIND_IN_SET -> Inhalt einer Spalte als neuen Spaltennamen
Von Steusi im Forum Relationale DatenbanksystemeAntworten: 6Letzter Beitrag: 29.09.10, 15:13 -
Chatprogrammbeispiel aus Java von Kopf bis Fuß Verständisproblem?!
Von ElJarno im Forum Java GrundlagenAntworten: 9Letzter Beitrag: 06.09.10, 22:17 -
SOAP WSDL PHP5 Verständisproblem
Von bernhard123 im Forum PHPAntworten: 1Letzter Beitrag: 01.02.08, 19:05 -
Remoting - Verständisproblem
Von XChris im Forum .NET Web und KommunikationAntworten: 2Letzter Beitrag: 10.08.06, 12:59 -
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Von strandjunge im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 19.01.05, 15:33





Zitieren

Login





