Ich habe eine Datenbank (SQLite), die (unter anderem) die Tabelle "tText" und die Tabelle "tSchlagworte" enthält. Zwischen beiden Tabellen besteht eine m:n Verknüpfung, um beliebig vielen Texten beliebig vielen Schagworten zuordnen zu können. Diese m:n Tabelle heißt "tC".
Um nun alle Texteinträge in "tText" zu finden, die einem bestimmten Schlagwort zugeordnet sind, funktioniert folgender Befehl problemlos:
SELECT * FROM tText JOIN tC ON tText.rID=tC.rFKText Where tC.rFKSchlagw = 76
Um nun Veränderungen in der Tabelle "tText" in der Spalte Y3 durchführen zu können, suchte ich mir bisher immer in einer Query die entsprechenden tText-Einträge mit obigem Befehl heraus und ging diese Einträge dann einzeln durch, um den "Y3-Eintrag" mit einem Update-Befehl für jeden einzelnen Eintrag in der Query zu verändern.
Funktioniert gut, ist auch ausreichend schnell. Aber ich denke, "elegant" ist das nicht, eher ein wenig umständlich. Irgendwie habe ich das Gefühl, dies sollte "schöner" gehen.
Deshalb meine Frage: Gibt es eine Möglichkeit, mit einem einzige SQL-Befehl sofort die Y3-Spalte bei den gewünschten Texteinträgen zu ändern?
Versucht habe ich schon viel, unter anderem auch diesen Befehl:
UPDATE tText SET Y3 = "Neuer_Eintrag" where EXISTS ( SELECT * FROM tText JOIN tC ON tText.rID=tC.rFKText Where tC.rFKSchlagw = 76 )
Funktioniert aber leider nicht, da dabei ALLE Einträge in der "Y3"-Spalte der Tabelle "tText" den "Neuen_Eintrag" erhalten.
Jemand eine Idee, wie der Befehl richtig lautet?
Danke schonmal und einen schönen Tag!
Aliobaba
Code: Alles auswählen
CREATE TABLE `tText` (
`rID` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
`rTitel` VARCHAR ( 90 ) NOT NULL,
`rText` TEXT,
`rHinweis` TEXT,
`rFKRubrik` INTEGER DEFAULT '1',
`rDatumerstellt` CHAR,
`rDatumgeaendert` CHAR,
`Y3` TEXT,
FOREIGN KEY(`rFKRubrik`) REFERENCES `tRubrik`(`rID`) ON DELETE NO ACTION
);
CREATE TABLE `tSchlagw` (
`rID` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
`rSchlagw` VARCHAR ( 51 ) NOT NULL,
);
CREATE TABLE `tC` (
`rID` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
`rFKText` INTEGER NOT NULL,
`rFKSchlagw` INTEGER NOT NULL,
FOREIGN KEY(`rFKSchlagw`) REFERENCES `tSchlagw`(`rID`) ON DELETE CASCADE,
FOREIGN KEY(`rFKText`) REFERENCES `tText`(`rID`) ON DELETE CASCADE
);