SQLite:如何搜索多个值?

SQLite: How do I search multiple values?

我的 table col1、col2、col3 中有两个自动完成文本视图和 3 列。 col1 是主键

table 看起来像这样:

| col1 | col2   |  col3                 |
-----------------------------------------
| 1    | store1 |apple,pineapple,mango  |
| 2    | store2 | apple,orange          |
| 3    | store3 | apple,pineapple,orange|
| 4    | store4 | orange,mango          |
| 5    | store5 | mango,jackfruit       |

我有两个问题:

Q1: 我可以在单个中存储多个值吗column.If 不,我该如何存储?

Q2: 之前说过我有两个autocompletetextview要搜索

即:

如果用户在 two autocompletetextview 中输入苹果和菠萝,那么我需要 显示匹配这两个文本的行。

预计o/p:

| col1 | col2   |  col3                 |
-----------------------------------------
| 1    | store1 |apple,pineapple,mango  |
| 2    | store3 | apple,pineapple,orange|

我怎样才能做到这一点?

我进行了几次研究,在 foreign key 的帮助下,我可以在单个列中存储多个值,但是如何在 [=13] 中使用 外键 =]实现expected o/p.

您不应在同一列中存储多个值。相反,您应该使用三个表。

然后很容易找到什么StoreID有这两种食物

SELECT FoodAvailable.StoreID
FROM FoodAvailable
JOIN Foods
  ON FoodAvailable.FoodID = Foods.FoodID
WHERE Foods.Food in ('apple', 'pineapple')
GROUP BY FoodAvailable.StoreID
HAVING count(*) = 2

商店

| StoreID | StoreName |
-----------------------
| 1       | store1    |
| 2       | store2    |
| 3       | store3    |
| 4       | store4    |
| 5       | store5    |

食物

| FoodID  | Food      | 
-----------------------
| 1       | apple     |
| 2       | pineapple |
| 3       | mango     |
| 4       | orange    |
| 5       | jackfruit |

可用食物

| StoreID | FoodID | 
---------------------
| 1       | 1      | //apple 
| 1       | 2      | //pineapple
| 1       | 3      | //mango  
| 2       | 1      | //apple 
| 2       | 4      | //orange
| 3       | 1      | //apple 
| 3       | 2      | //pineapple
| 3       | 4      | //orange
| 4       | 4      | //orange
| 4       | 3      | //mango  
| 5       | 3      | //mango  
| 5       | 5      | //jackfruit

你的最终查询是这样的

SELECT f.StoreID, GROUP_CONCAT(food ORDER BY food DESC SEPARATOR ', ')
FROM FoodAvailable f
WHERE f.StoreID = (SELECT FoodAvailable.StoreID
                   FROM FoodAvailable
                   JOIN Foods
                     ON FoodAvailable.FoodID = Foods.FoodID
                   WHERE Foods.Food in ('apple', 'pineapple')
                   GROUP BY FoodAvailable.StoreID
                   HAVING count(*) = 2
                  )
GROUP BY f.StoreID