MYSQL Update über 2 Tabellen

ottscho
Goto Top
Hey,

ich habe zwei Tabellen, welche ich gleichzeitig Updaten möchte, falls möglich.

Tabelle1:

Tabelle2:

Beziehung: `s_articles_details`.articleID=`s_articles`.id

Nun möchte das Feld `s_articles_details`.instock und `s_articles`.active auf 0 setzen, wenn das Datum von `s_articles`.changetime < '2011-10-05 10:32:58' ist.

Mein Versuch:

Bei dieser WHERE Klausel werden aber keine Datensätze selektiert.

Geht das überhaupt in einem Wisch?

Danke

Content-Key: 174162

Url: https://administrator.de/contentid/174162

Ausgedruckt am: 29.05.2022 um 06:05 Uhr

Mitglied: thaenhusen
thaenhusen 05.10.2011 um 11:08:16 Uhr
Goto Top
Moin.


HTH
MK
Mitglied: ottscho
ottscho 05.10.2011 um 11:15:04 Uhr
Goto Top
Danke dir.

Wenn ich das FROM entferne geht die Syntax.
Aber das Ergebnis ist das Gleiche:

Null betroffene Datensätze.

Aber es gib in der DB `s_articles` tausende, welche in changetime < '2011-10-05 10:32:58' sind.
Mitglied: thaenhusen
thaenhusen 05.10.2011 um 11:41:41 Uhr
Goto Top
Moin.


Sorry. Versuchs mal so.

PS.: Sonst schick mal einen kurzen Dump der Tabellen...

HTH
MK
Mitglied: ottscho
ottscho 05.10.2011 um 11:53:47 Uhr
Goto Top
mhhh, hier habe ich bei deinem Statement nun einen Fehler:
Fehler
SQL-Befehl:
UPDATE `s_articles` INNER JOIN `s_articles_details` ON `s_articles_details`.articleID = `s_articles`.id WHERE `s_articles`.changetime < '2011-10-05 10:32:58' SET `s_articles`.active =0,
`s_articles_details`.instock =0

MySQL meldet: Dokumentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where `s_articles`.changetime &lt;'2011-10-05 10:32:58'
SET `s_articles`.active =' at line 3

Das habe ich noch versucht:

Aber gleiches Ergebnis. Statement läuft, aber 0 betroffene Datensätze.

SQL Dump so direkt kann ich dir leider nicht schicken. Kundendaten.
Aber ich kann dir einen Export von beiden Tabellen, jeweils die ersten 2-3 Zeilen zukommen lassen.
Mitglied: ottscho
ottscho 05.10.2011 um 13:04:53 Uhr
Goto Top
Hab dir ne PN geschickt ;)

Neuster Versuch:

Gleiches Ergebnis. 0 Datensätze betroffen.
Mache ich nur die Unterabfrage
select id from `s_articles` where changetime < '2011-10-05 10:32:58'
oder
select count(*) from `s_articles` where changetime < '2011-10-05 10:32:58'
erhalte ich aber 44264 Datensätze.


Ich blicks echt nicht!

Mache ich:
erhalte ich einen Datensatz zurück,

mache ich aber:
bekomme ich wieder 0 Datensätze zurück
Mitglied: thaenhusen
thaenhusen 05.10.2011 um 13:28:49 Uhr
Goto Top
Moin.


Das funktioniert jetzt. ID 1 und 4 in den Testdaten werden damit geupdated.

Meine Syntax kam von einem anderen SQL System. Sorry.

HTH
MK
Mitglied: ottscho
ottscho 05.10.2011 um 13:37:49 Uhr
Goto Top
ich muss idich enttäusche, Geht nicht.
Aber ich habe eine Ahnung, woran es liegt. Es muss am WHERE liegen im Bezug auf die Formatierung des Datum/Uhrzeit.

Ich habe das Ganze mal auf eine Tabelle beschränkt.
Select geht aber Update nicht!


Das ergibt wieder tausende Treffer.

Das Update allerdings ergibt wieder NULL:
Mitglied: thaenhusen
thaenhusen 05.10.2011 um 14:46:47 Uhr
Goto Top
Moin.

Also bei mir mit Deinem Dump funktioniert das.
Dann hast Du irgendwas mit dem Datetime auf Deinem Server verfrimelt.

Ich habe Deine Dumps in einer Tmp-DB importiert und dann funktioniert das...

Ich nutze MySQL 5.0.51a.

HTH
MK
Mitglied: ottscho
ottscho 05.10.2011 um 15:07:44 Uhr
Goto Top
Hey, danke dir für die tritte :) face-smile
Es geht. War mein fehler. Ich sitze einfach schon zu lange vor der Kiste.

Wenn ein Spalte schon den UPDATE Wert beinhaltet, wird diese nicht mehr upgedatet. Da alle meine Datensätze schon die gewünschten Werte hatten, wurde nichts durchgeführt :( face-sad

Das war schon alles...