SELECT Subquery in UPDATE

SELECT Subquery in UPDATE

am 07.04.2006 15:28:19 von nomad1

Hallo,

ich nutze MySQL 5.0, folgender Aufruf sollte also funktionieren:

UPDATE artikel_kategorie SET FK_Kategorie_ID =3D 30 WHERE FK_Artikel_ID
IN (SELECT Artikel_ID AS FK_Artikel_ID FROM artikel WHERE Name LIKE
'%30%')

Wenn ich SELECT alleine ausführe bekomme ich 11 Zeilen als Ergebnis.
Führe ich das komplette UPDATE aus, dann passiert gar nichts, es
sollten aber alle 11 Zeilen aus dem SELECT geupdated werden.

Wer kann helfen?


Grüße

Johannes

Re: SELECT Subquery in UPDATE

am 07.04.2006 18:24:36 von Dirk Brosowski

nomad1@gmx.de schrieb:
> Hallo,
>
> ich nutze MySQL 5.0, folgender Aufruf sollte also funktionieren:
>
> UPDATE artikel_kategorie SET FK_Kategorie_ID = 30 WHERE FK_Artikel_ID
> IN (SELECT Artikel_ID AS FK_Artikel_ID FROM artikel WHERE Name LIKE
> '%30%')
>
> Wenn ich SELECT alleine ausführe bekomme ich 11 Zeilen als Ergebnis.
> Führe ich das komplette UPDATE aus, dann passiert gar nichts, es
> sollten aber alle 11 Zeilen aus dem SELECT geupdated werden.
>
> Wer kann helfen?

Also erstmal sehe ich da ein UPDATE auf artikel_kategorie und ein SELECT
auf artikel. Ein Update auf artikel fände ich logischer.

Grüße

Dirk

Re: SELECT Subquery in UPDATE

am 07.04.2006 18:31:07 von Andreas Kretschmer

Andreas
--
q: why do so many people take an instant dislike to mysql?
a: it saves time (oicu in #postgresql)
Explaining the concept of referential integrity to a mysql user is like
explaining condoms to a catholic (Shadda in #postgresql)

Re: SELECT Subquery in UPDATE

am 08.04.2006 04:19:39 von christoph.soellner

> Wenn ich SELECT alleine ausführe bekomme ich 11 Zeilen
> als Ergebnis. Führe ich das komplette UPDATE aus, dann
> passiert gar nichts, es sollten aber alle 11 Zeilen aus
> dem SELECT geupdated werden.
Nur so eine Frage, bist Du sicher, dass nichts passiert,
oder hast Du keine Fehlerbehandlung implementiert? Also
wenn Du PHP verwendest und nicht extra "or die(mysql_error())"
angibst, nippelt das Script uU einfach ab und es schaut
so aus, als wäre nichts passiert.

Lösungsvorschlag:
a) "AS FK_Artikel_ID " lass das mal weg, obwohl es nichts
machen sollte, theoretisch.
b) Stimmen denn die Typen der Spalten Artikel_ID und FK_
Artikel_ID überein?
c) Gibt es überhaupt eine Schnittmenge? (Klar, das Select
alleine gibt 11 Reihen, aber sind da auch Gegenstücke
in der anderen Tabelle drin?)

Naja, in diesem Sinne.
Christoph

Re: SELECT Subquery in UPDATE

am 08.04.2006 15:23:24 von nomad1

Christoph Soellner schrieb:

> Lösungsvorschlag:
> a) "AS FK_Artikel_ID " lass das mal weg, obwohl es nichts
> machen sollte, theoretisch.
> b) Stimmen denn die Typen der Spalten Artikel_ID und FK_
> Artikel_ID überein?
> c) Gibt es überhaupt eine Schnittmenge? (Klar, das Select
> alleine gibt 11 Reihen, aber sind da auch Gegenstücke
> in der anderen Tabelle drin?)

Hallo Christoph,

danke für deine Lösungsvorschläge, aber leider:

a) schon ausprobiert, macht kein Unterschied
b) yo, beide int(11)
c) yo, gibt es auch, sonst hätt ich mir die Abfrage garnicht
ausgedacht :-)

Ich hab das blöde Gefühl, dass ich irgendwo einen kleinen doofen
Fehler drinhab, den ich nur nicht finde, denn theoretisch müsste die
Abfrage eigentlich funktionieren.


Grüße

Johannes

Re: SELECT Subquery in UPDATE

am 08.04.2006 15:26:52 von nomad1

Ok, ich hatte recht. Was der Fehler war weiß ich nicht, hab's aber
grade nochmal getestet und es funktioniert. Sehr rätselhaft ...

Danke=20

Johannes