2013-05-25 47 views
1

我想選擇recipe_id爲有我的兩個成分食譜,但我不能使用像這樣(我的意思是對所有列返回null):在Sqlite中使用AND的多個LIKE語句。

SELECT 
    vsearch.ingredient_id, 
    vsearch.ingredtypes_id, 
    vsearch.name, 
    vsearch.recipe_id, 
    vsearch.qingred 
FROM 
    vsearch 
WHERE 
    vsearch.name = 'olive' AND vsearch.name = 'apple' 

vsearch是一個視圖是:

SELECT 
    ingredient.ingredient_id, 
    ingredient.ingredtypes_id, 
    ingredient.name, 
    quantity.recipe_id, 
    quantity.ingredient_id AS qingred 
FROM 
    ingredient , 
    quantity 
WHERE 
    strong textingredient.ingredient_id = quantity.ingredient_id 

而且我的繼承人數據庫表:enter image description here

+0

是否您的語句'vsearch.name ='olive'AND vsearch.name ='apple''使查詢/結果模糊不清。 1個物品如何同時有2個名稱? –

+0

你可以添加一個你想要的結果的樣本嗎? –

+0

@Sagar Waghmare你知道這裏有數量表,其中包含與recipe_id相關聯的成分列表以及該成分的數量,我想要做的是選擇一個配方ID,蘋果和橄欖都認爲這是配方的配方。我錯了嗎?請詳細解釋。 –

回答

1

查找(例如)找到配方ID的同時包含黃瓜和西紅柿;

SELECT recipe_id 
FROM vsearch 
WHERE name = 'cucumber' OR name = 'tomato' 
GROUP BY recipe_id 
HAVING COUNT(*) = 2 

...其中2是要匹配(在這種情況下),

An SQLfiddle to test with成分的名稱。

1
select * 
from vsearch 
where recipe_id 
in 
(select recipe_id from vsearch where name = 'apple' 
    intersect 
    select recipe_id from vsearch where name = 'olive' 
)