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 .-)