heinetz: You can't specify target table 'waregroups' for update in FROM

Hallo Forum,

ich habe mit folgendem SQL-Statement ein Problem:

INSERT INTO `waregroups` ( `id` , `values_id` , `position` )  
VALUES (  
'', 182, (  
  
SELECT IFNULL( MAX( t.`position` ) +1, 1 ) AS pos  
FROM `waregroups` AS t  
)  
)

der Fehler taucht auf meinem lokalen Entwicklungssystem
nicht auf, auf meinem Testserver allerdings schon. Mir
ist nicht ganz klar, welche Informationen ausschlaggebend
für die MySQL-Version sind. Deshab schreib ich mal alles
auf:

lokales Entwicklungssystem:
Server Version: 5.0.67
MySQL-Client-Version: 5.0.67

Testserver:
MySQL - 5.0.22-Debian_0ubuntu6.06.6-log
MySQL Client-Version: 4.1.15

Auf meinem lokalen System hat es gereicht, der tabelle im
Subquery einen Alias zu geben, danach lief's. Hier hab ich
nun auch nochmal versucht, dem Feld einen Aliasnamen zu
geben. Aber auch das hilft nichts.

Was kann man da tun ?

Wie aus dem Query hervorgehen sollte, möchte ich einen Datensatz
in einen Tabelle einfügen und verwende für die Ordnung in dieser
Tabelle das Feld 'position'. Der neu eingefügte Datensatz soll
den höchsten Wert aus diesem Feld + 1 bekommen. Ich hab keine
Idee, wie ich das anders regeln könnte.

Kann mit jemand einen Tipp geben ?

danke und

beste gruesse,
heinetz

  1. hi,

    für's archiv:

    ich habe mit folgendem SQL-Statement ein Problem:

    INSERT INTO waregroups ( id , values_id , position )

    VALUES (
    '', 182, (

    SELECT IFNULL( MAX( t.position ) +1, 1 ) AS pos
    FROM waregroups AS t
    )
    )

      
    das half:  
      
    ~~~sql
    INSERT INTO `waregroups` ( `id` , `values_id` , `position` )  
    SELECT '', 182, (  
      
    SELECT IFNULL( MAX( t.`position` ) +1, 1 )  
    FROM `waregroups` AS t  
    )
    

    gruesse,
    heinetz