SQLITE UPDATE Befehl

  • Ich weiß nicht, hier der richtige Platz ist, aber ich hab nicht direkt ein Problem mit AutoIt sondern mit SQLite.

    Ich habe 3 Tabellen in meiner Datenbank,
    hier erstmal die Query

    [autoit]

    "UPDATE tblErgebnis SET ColumnA= ColumnA + 1 WHERE ColumnB IN (SELECT ColumnB FROM tblData WHERE ColumnC IN (SELECT ColumnC from tblGehalt));"

    [/autoit]


    Also, die Query soll ColumnA um 1 erhöhen, wenn ColumnB in der Unterabfrage vorkommt.
    Wenn die Bedingungen zutreffen, erhöht sich auch der Wert in der Datenbank um 1.
    Wenn aber mehr als einmal die Bedingung zutrifft, soll sich auch der Wert dementsprechend erhöhen, und das passiert bei mir leider nicht.

    Ich weiß, das es Count() gibt, aber ich weiß nicht, wie ich das in diese Abfrage einbaue.
    Würde mich über Hilfe freuen ;)

  • Also falls du erwartest, dass sich ein Wert mit dieser Query um 2 erhöht wird dies nicht passieren es werden sich lediglich alle zutreffenden um 1 erhöhen

    Wie man das ganze in 1 Query machen könnte weiß ich auch nicht ich würde davor einfach ein
    "SELECT count(*) FROM tblErgebnis WHERE ColumnB IN (SELECT ColumnB FROM tblData WHERE ColumnC IN (SELECT ColumnC from tblGehalt));"
    machen und dann weißt du um wieviel du erhöhen musst.

  • Eine elegante Lösung wäre, sich eine Unterabfrage mit ColumnB und einem Count(*) zu erstellen und auf die zu verjoinen - aber Joins in UPDATE-Klauseln scheinen bei SQLite nicht zu funktionieren (hab's jedenfalls nicht hingekriegt).

    Vielleicht hilft dir eine abhängige Unterabfrage:

    Code
    "UPDATE tblErgebnis SET ColumnA=ColumnA+(SELECT COUNT(*) FROM tblData GROUP BY ColumnB HAVING ColumnC IN (SELECT ColumnC FROM tblGehalt) AND ColumnB=tblErgebnis.columnB)"