Update über mehrere Tabellen
Update über mehrere Tabellen
am 14.03.2005 12:32:58 von Tschela Baumann
Hi,
die folgende UPDATE-Query funktioniert auf meiner lokalen Testumgebung
ohne Probleme, aber auf dem Server bekomme ich einen Fehler. Die
Tabellen und Felder sind genauso wie in der lokalen DB.
Query:
UPDATE tourcourse,tour SET tourcourse.DefaultContactViMemberID='128'
WHERE tour.TourcourseID=tourcourse.ID
AND tour.ResponsibleOfficeID = '4';
Fehlermeldung:
#1064 You have an error in your SQL syntax near
'tour SET tourcourse.DefaultContactViMemberID='128'
WHERE tour.TourcourseID=tourc' at line 1
Könnt Ihr mir helfen?
Danke schonmal.
Re: Update über mehrere Tabellen
am 14.03.2005 12:44:52 von Helmut Chang
Tschela Baumann schrieb:
> Query:
>
> UPDATE tourcourse,tour SET tourcourse.DefaultContactViMemberID='128'
> WHERE tour.TourcourseID=tourcourse.ID
> AND tour.ResponsibleOfficeID = '4';
>
> Fehlermeldung:
>
> #1064 You have an error in your SQL syntax near
> 'tour SET tourcourse.DefaultContactViMemberID='128'
> WHERE tour.TourcourseID=tourc' at line 1
| Starting with MySQL 4.0.4, you can also perform UPDATE operations
| that cover multiple tables.
Welche Version?
gruss, heli
Re: Update über mehrere Tabellen
am 14.03.2005 16:13:37 von Tschela Baumann
Helmut Chang schrieb:
> Tschela Baumann schrieb:
>
>> Query:
>>
>> UPDATE tourcourse,tour SET tourcourse.DefaultContactViMemberID='128'
>> WHERE tour.TourcourseID=tourcourse.ID
>> AND tour.ResponsibleOfficeID = '4';
>>
>> Fehlermeldung:
>>
>> #1064 You have an error in your SQL syntax near
>> 'tour SET tourcourse.DefaultContactViMemberID='128'
>> WHERE tour.TourcourseID=tourc' at line 1
>
>
>
>
> | Starting with MySQL 4.0.4, you can also perform UPDATE operations
> | that cover multiple tables.
>
> Welche Version?
>
Danke für den Tipp. Auf dem Server ist erst die Version 3.23.57
Re: Update über mehrere Tabellen
am 14.03.2005 20:47:00 von Tschela Baumann
Helmut Chang schrieb:
> Tschela Baumann schrieb:
>
>> Query:
>>
>> UPDATE tourcourse,tour SET tourcourse.DefaultContactViMemberID='128'
>> WHERE tour.TourcourseID=tourcourse.ID
>> AND tour.ResponsibleOfficeID = '4';
>>
>> Fehlermeldung:
>>
>> #1064 You have an error in your SQL syntax near
>> 'tour SET tourcourse.DefaultContactViMemberID='128'
>> WHERE tour.TourcourseID=tourc' at line 1
>
>
>
>
> | Starting with MySQL 4.0.4, you can also perform UPDATE operations
> | that cover multiple tables.
>
Also ich habs jetzt über JOIN versucht. Lokal klappts wieder
wunderbar, aber auf dem Server immer noch nicht. (gleiche Fehlermeldung)
UPDATE tourcourse JOIN tour
SET tourcourse.DefaultContactViMemberID='152'
WHERE tour.TourcourseID=tourcourse.ID
AND tour.ResponsibleOfficeID = '4'
Wie bekomm ich so ein Update hin, dass es mit MySQL Version 3.23.57
klappt?
Re: Update über mehrere Tabellen
am 15.03.2005 00:15:55 von Helmut Chang
Tschela Baumann schrieb:
> Also ich habs jetzt über JOIN versucht. Lokal klappts wieder wunderbar,
> aber auf dem Server immer noch nicht. (gleiche Fehlermeldung)
lesen!
> UPDATE tourcourse JOIN tour
> SET tourcourse.DefaultContactViMemberID='152'
> WHERE tour.TourcourseID=tourcourse.ID
> AND tour.ResponsibleOfficeID = '4'
>
> Wie bekomm ich so ein Update hin, dass es mit MySQL Version 3.23.57 klappt?
Zwei UPDATE-Queries absetzen.
Re: Update über mehrere Tabellen
am 15.03.2005 14:10:53 von Kai Ruhnau
Helmut Chang schrieb:
> Tschela Baumann schrieb:
>
>> Also ich habs jetzt über JOIN versucht. Lokal klappts wieder
>> wunderbar, aber auf dem Server immer noch nicht. (gleiche Fehlermeldung)
>
>
> lesen!
>
>> UPDATE tourcourse JOIN tour
>> SET tourcourse.DefaultContactViMemberID='152'
>> WHERE tour.TourcourseID=tourcourse.ID
>> AND tour.ResponsibleOfficeID = '4'
>>
>> Wie bekomm ich so ein Update hin, dass es mit MySQL Version 3.23.57
>> klappt?
>
>
> Zwei UPDATE-Queries absetzen.
Ne :-)
SELECT tourcourse.primary_key
FROM tourcourse JOIN tour
WHERE tour.TourcourseID=tourcourse.ID
AND tour.ResponsibleOfficeID = 4;
Für alle zurückgegebenen Werte dann ein
UPDATE tourcourse
SET DefaultContactViMemberId=152
WHERE primary_key=$wert
Natürlich kommen dann alle Probleme mit Race-Conditions hinzu...
Grüße
Kai
--
This signature is left as an exercise for the reader.
Re: Update über mehrere Tabellen
am 15.03.2005 14:41:01 von Helmut Chang
Kai Ruhnau schrieb:
>>> UPDATE tourcourse JOIN tour
>>> SET tourcourse.DefaultContactViMemberID='152'
>>> WHERE tour.TourcourseID=tourcourse.ID
>>> AND tour.ResponsibleOfficeID = '4'
>>>
>>> Wie bekomm ich so ein Update hin, dass es mit MySQL Version 3.23.57
>>> klappt?
>>
>>
>>
>> Zwei UPDATE-Queries absetzen.
>
>
> Ne :-)
Uuups. Es soll ja nur auf eine Tabelle das UPDATE gefahren werden.
gruss, heli
Re: Update über mehrere Tabellen
am 15.03.2005 21:29:48 von Tschela Baumann
Kai Ruhnau schrieb:
> Helmut Chang schrieb:
>
>> Tschela Baumann schrieb:
>>
>>> Also ich habs jetzt über JOIN versucht. Lokal klappts wieder
>>> wunderbar, aber auf dem Server immer noch nicht. (gleiche Fehlermeldung)
>>
>>
>>
>> lesen!
>>
>>> UPDATE tourcourse JOIN tour
>>> SET tourcourse.DefaultContactViMemberID='152'
>>> WHERE tour.TourcourseID=tourcourse.ID
>>> AND tour.ResponsibleOfficeID = '4'
>>>
>>> Wie bekomm ich so ein Update hin, dass es mit MySQL Version 3.23.57
>>> klappt?
>>
>>
>>
>> Zwei UPDATE-Queries absetzen.
>
>
> Ne :-)
>
> SELECT tourcourse.primary_key
> FROM tourcourse JOIN tour
> WHERE tour.TourcourseID=tourcourse.ID
> AND tour.ResponsibleOfficeID = 4;
>
> Für alle zurückgegebenen Werte dann ein
>
> UPDATE tourcourse
> SET DefaultContactViMemberId=152
> WHERE primary_key=$wert
Danke so hats funktioniert, aber hübsch ist es nicht. Ich hab die
Rückgabe String implodiert und dann UPDATE ... WHERE ID IN ($strIDs);
Danke nochmal .-)