SQLite Delete Abfrage Fehler

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von The_Saint.

    SQLite Delete Abfrage Fehler

    Hallo Zusammen,

    leider komme ich bei folgender SQLite - Abfrage nicht weiter:

    VB.NET-Quellcode

    1. DELETE * FROM ARCHIV
    2. INNER JOIN BUCHUNG ON (ARCHIV.BelegNR = BUCHUNG.BelegNR)
    3. WHERE BUCHUNG.OBJ = 40 OR BUCHUNG.OBJ = 40;


    Es kommt immer die Fehlermeldung: "SQL Error: near "*": syntax error"

    Als SELECT-Befehl funktioniert es einwandfrei.

    VB.NET-Quellcode

    1. SELECT * FROM BUCH
    2. INNER JOIN BUCHUNG ON (BUCH.BelegNR = BUCHUNG.BelegNR)
    3. WHERE BUCHUNG.OBJ = 40 OR BUCHUNG.OBJ = 40;


    Weiß jemand wie die DELETE - Abfrage in SQLite aussehen muss?

    Vielen Dank schon mal für Eure Mühe.

    Viele Grüße

    Annoxoli schrieb:

    mhhh... ich hab meine so:

    SQL-Abfrage

    1. DELETE FROM `Passwort` WHERE Passwort_ID = 123
    2. '' BZW so steht es in meinem code:
    3. db.Query("DELETE FROM `Passwort` WHERE Passwort_ID = " & "" & CInt(DBID.Text) & "")

    Hallo Annoxoli,

    vielen Dank für Deine Antwort.
    In meiner Abfrage führe ich noch einen Abgleich mit einer anderen Tabelle durch.
    Bei Deinem Beispiel wird nur aus einer Tabelle gelöscht.

    Weißt Du vielleicht noch einen anderen Rat?

    Vielen Dank
    probier generell erstmal ob der abgleich funktioniert.
    wenn der fehlerfrei funktioniert, sollte es eigentlich klappen.

    zudem glaube ich nicht das ein "*" in ein delete reingehört.
    wenn du ein delete befehl machst, löscht er eben alles wo die bedingung zutrifft.

    bsp S-SQL

    SQL-Abfrage

    1. Use <DB_Name>
    2. DELETE FROM <Tabelle_Name>
    3. WHERE <Spalte> = <Wert>
    Annoxoli wollte damit ausdrücken, das du den * bei dem DELETE Statement absolut nicht brauchst sie auch hierzu die Dokumentation von SQLite.
    Er macht genauso einen abgleich wie du auch, nur das er eben keine zweite Tabelle hinzu joint!

    Aber ehrlich gesagt sind das Grundlagen, die man eigentlich wissen/kennen sollte und durch 2 Sekunden Google findet ;)
    Da findest du dann auch das SQLite keine Joins im Delete unterstützt sondern eben SUBSelects

    Annoxoli schrieb:

    probier generell erstmal ob der abgleich funktioniert.
    wenn der fehlerfrei funktioniert, sollte es eigentlich klappen.

    zudem glaube ich nicht das ein "*" in ein delete reingehört.

    Also die Select - Abfrage funktioniert einwandfrei. Die Datensätze werden ausgewählt ohne Fehlermeldung.
    Hm, "*" gehört nicht dort hin? Hm.

    Leider kriege ich die Delete - Abfrage auch, wenn ich z. B.: Delete NR .... einsetze nicht hin.

    icemanns schrieb:

    SQL-Abfrage

    1. DELETE FROM ARCHIV BelegNR IN (SELECT * from buchung WHERE OBJ = 40 OR OBJ = 40);


    Über die Logik von 2x OBJ = 40 will ich gar nicht diskutieren!

    Hallo icemanns,

    vielen Dank für Deine Antworten. Ja, da hab ich auch noch einen Kopierfehler gemacht. In der Tabelle Buchung gibt es einmal eine SollObj-Nr und einmal ein HabenObj-Nr.

    Die Abfrage hat super funktioniert.

    Vielen vielen Dank.
    Auch an allen anderen vielen Dank. Manchmal ist aller Anfang schwer.

    Viele Grüße