hawkmaster: Insert mit SubSelect?

Hallo zusammen,
in einer MySQL Tabelle "accdep" stehen Kostenstellen ID's und Abteilungs ID's
ID,AccID,DepID
1  4      11
2  6      2

Die Tabelle "departments" enthält die Namen der Abteilungen

Jetzt möchte ich prüfen ob in "accdep" alle Abteilungs IDs vorkommen die in der Tabelle "departments" drin sind. Wenn nicht sollen diese eingetragen werden mit einer Default Kostenstelle ID.
Ich versuche das mit einem Insert und SubSelect

INSERT INTO accdep (DepartmentsID) SELECT
 A.DepartmentsID
 FROM departments A
 LEFT JOIN accdep B ON A.DepartmentsID = B.DepartmentsID
 WHERE B.DepartmentsID IS NULL

So funktiojiert es zwar aber hier habe ich ja noch keine Default Kostenstelle.
Wenn ich es so versuche mit der Variablen $accountid_default und zusätzlicher Spalte "AccountID" bekomme ich einen MySQL Fehler;

$DBO->exec("INSERT INTO (DepartmentsID,AccountID) VALUES ((SELECT
 A.DepartmentsID
 FROM departments A
 LEFT JOIN accdep B ON A.DepartmentsID = B.DepartmentsID
 WHERE B.DepartmentsID IS NULL),'$accountid_default')") ;

Wie muss die Schreibweise sein damit es kein Syntax Fehler gibt?

Könnte man das Ganze auch anders lösen?

vielen Dank und viele Grüße
hawk

  1. Habe eben die richtige Schreibweise ohne VALUES herausgefunden.

    vielen Dank und viele Grüße
    hawk

    1. Habe eben die richtige Schreibweise ohne VALUES herausgefunden.

      Schön, dass du selber draufgekommen bist. Draus lernt man mMn immer am meisten.

      Trotzdem wärs gut wenn du die Lösung postest, denn wenn jemand per Suchfunktion auf diesen Thread stösst, so wird er einmal nicht enttäuscht weitersuchen müssen, weil wieder keine Lösung steht.

      --
      LG,
      Snafu
      1. Hallo Snafu,

        Trotzdem wärs gut wenn du die Lösung postest, denn wenn jemand per Suchfunktion auf diesen Thread stösst, so wird er einmal nicht enttäuscht weitersuchen müssen, weil wieder keine Lösung steht.

        Da hast du natürlich vollkommen recht und ich will das hiermit gerne nachholen. Schließlich hat mir die Suchfunktion auch oft geholfen.

        Lösung:
        Man darf bei einem Insert mit Select nicht mit "Values" arbeiten.
        Vielmehr muss die Variable $accountid_default für die zweite Spalte "AccountID" direkt im Select angegeben werden.

          
        INSERT INTO accdep (DepartmentsID,AccountID) SELECT  
         A.DepartmentsID,$accountid_default  
         FROM departments A  
         LEFT JOIN accdep B ON A.DepartmentsID = B.DepartmentsID  
         WHERE B.DepartmentsID IS NULL  
        
        

        Ich hoffe ich liege damit richtig. zumindest klappt es soweit bei mir.
        Allerding habe ich im Netz auch ein Insert..Select Beispiel gesehen das auch mit "VALUES" gearbeitet hat.

        vielen Dank und viele Grüße
        hawk