Es gibt als Datentype das "SET".
CREATE TABLE `filter` (
`userID` INT,
`filter` SET('PauseBeginn', 'PauseEnde' ,'Kommen', 'Gehen' ),
INDEX (`userID`)
)
Danach kann in die Tabelle wie folgt eingetragen werden:
INSERT INTO `filter` ( `userID` , `filter` ) VALUES ( 1, 'PauseBeginn' );
SELECT `filter` FROM `filter` WHERE `userID` = 1;
userID|filter 1|PauseBeginn
Filter hinzufügen:
UPDATE `filter` SET `filter` = CONCAT(`filter` , ',', 'PauseEnde') WHERE `userID`=1;
SELECT `userID`, `filter` FROM `filter` WHERE `userID` = 1;
userID|filter 1|PauseBeginn, PauseEnde
Index setzen und nach Filter abfragen:
ALTER TABLE `filter` ADD INDEX `filter` ( `filter` )
SELECT `userID`, `filter` FROM `filter` WHERE FIND_IN_SET( 'PauseEnde',`filter` );
userID|filter 1|PauseBeginn, PauseEnde
Entfernung eines Filters:
UPDATE `filter` SET `filter` = REPLACE( `filter` , 'PauseBeginn', '' )
userID|filter 1|PauseEnde
Versuch eines bei der Spaltendefinition nicht definierten Eintrages:
UPDATE `filter` SET `filter` = 'Nicht Definiert' WHERE `userID`=1;
SELECT `userID`, `filter` FROM `filter` WHERE `userID` = 1;
userID|filter 1|