В подобных ситуациях в прошлом я создавал целочисленный столбец, с которым можно выполнять побитовые операции. Объяснение ниже:
Начните с присвоения одной двоичной цифры каждому значению-
Cat Dog Firefly
--- --- ------
1 2 4
Далее вы добавите целочисленный столбец в основную таблицу, мы назовем его options. Когда число преобразуется в двоичное, каждая цифра будет обозначать погоду кошек, собак или светлячков. Пример:
5 = 101 в двоичном виде = кошки разрешены, собаки запрещены, светлячки разрешены.
id | locationName | options
---------------------------
1 | loc 1 | 5
2 | loc 2 | 2
3 | loc 3 | 7
4 | loc 4 | 6
Теперь мы можем использовать побитовые операции со столбцом параметров, чтобы определить, какие параметры разрешены. Примеры:
Чтобы получить все записи, которые позволяют собакам, когда мы не говорим о кошках или светлячках, вы должны выполнить следующую побитовую операцию:
2 & options = 2
Это вернет записи 2,3 и 4.
Чтобы получить все записи, которые разрешают собак и светлячков, мы выполним следующую побитовую операцию:
6 & options = 6
Это вернет записи 3 и 4
Чтобы получить все записи, которые позволяют кошкам и светлячкам, мы выполним следующую побитовую операцию:
5 & options = 5
Это вернет записи 1 и 3.
ТОЛЬКО принимает светлячков:
4 | Варианты = 4
Не принимает светлячков:
4 & options = 0
Вероятно, это сложная концепция, поэтому, пожалуйста, дайте мне знать, если у вас есть какие-либо вопросы. Мне кажется, что это может быть самый простой способ выполнить то, что вы пытаетесь сделать, когда вы сможете понять концепцию.