dedlfix: Mehrere Werte in einem Feld speichern? - Datentype "SET"

Beitrag lesen

Tach!

Es gibt als Datentype das "SET".

Einschränkung: Der Datentyp SET ist anwendbar, wenn die Liste der Werte unveränderlich feststeht. Ansonsten müsste man das Tabellenlayout ändern, um Werte hinzuzufügen oder zu entfernen.

Aber da sehe ich gleich noch etwas im OP, das ich in meiner ersten Antwort nicht beachtet hatte.

Hier [bei einer DBMS-Abfrage] muss ich dann ein array mit den Werten übergeben, die ich eben _nicht_sehen möchte.

In dem Fall sieht es so aus, dass die Werte einzeln benötigt werden, weil sie Suchkriterium für andere Datensätze sind. Man kann sie zwar kommasepariert speichern und dann mit FIND_IN_SET() was zaubern (das arbeitet neben dem Feldtyp SET auch mit kommaseparierten Strings), aber das wird auf einen Full-Table-Scan hinauslaufen. Besser ist dann eine Tabelle mit einzelnen Datensätzen pro Wert. Dann kann man mit IN() oder NOT IN() plus Subquery auf ebendiese Datensätze innerhalb des IN() besser darauf zugreifen.

SELECT .. 
FROM irgendwo 
WHERE kriteriumsfeld NOT IN(SELECT value FROM andere_tabelle WHERE person = irgendwer)

dedlfix.