2016-09-29 103 views
-2

我有两个autocomplettextview和3列在我的表col1,col2,col3。 COL1是主键SQLite:如何搜索多个值?

表是这样的:

| 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搜索

即:

如果用户键入的苹果和2 autocompletetextview菠萝那么我就需要 显示行,这两个文本相匹配。

预期的O/P

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

我怎么能做到这一点?

我通过几个reseaches走了,带着的foreign key的帮助下,我可以存储在单个列多个值,但如何使用Where clause外键实现expected o/p

+1

请学习一些基本的SQL ...您可以连接的表+ https://en.wikipedia.org/wiki/Database_normalization – Selvin

+1

您第一个问题你应该创建两个表,并简单地加入他们! –

+0

如果您有2个问题,请在单独的帖子中提问。 – Shadow

回答

1

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

那么容易找到什么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 | 

FoodAvailable

| 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 
+0

感谢您的回应..我需要根据用户的搜索显示,然后我们如何使用IN运算符@Juan – madhushri

+0

检查更新.... –

+0

用户可以搜索autocompletextview中的任何内容,然后如何在IN运算符中输入apple,pineapple。用户还可以键入橙色,苹果或其他一些组合@Juan – madhushri