在获取查询时需要帮助

时间:2014-11-11 08:58:26

标签: android sqlite

我有一张包含Id和鸡尾酒名称的鸡尾酒表(比如1-16范围内的id)。 这些鸡尾酒将由不同成分的任何组合制成。通常每种鸡尾酒由3种或更多种成分制成。

所以我创建了一个包含每种鸡尾酒细节的食谱。例如,id为1的鸡尾酒由成分'id - 1,4,14制成。

现在假设我只有1-7成分(任何随机的7种成分)。我需要取出所有那些由我所拥有的成分制成的鸡尾酒。

我尝试了以下查询,但它返回了所有鸡尾酒,因为每个鸡尾酒至少含有一种成分

SELECT * FROM SB_receipe WHERE ingr_id IN (1,2,3,4,5,6,7) GROUP BY cock_id;

请帮我解决这个问题。

提前致谢

1 个答案:

答案 0 :(得分:0)

您想要一个返回使用成分的鸡尾酒的查询。

SQL没有关键字ONLY;你必须用双重否定来表达这一点:
你想要鸡尾酒中列出的没有成分

SELECT *
FROM cock
WHERE NOT EXISTS (SELECT 1
                  FROM SB_recipe
                  WHERE cock_id = cock.id
                    AND ingr_id NOT IN (1,2,3,4,5,6,7))

或者,您想要任何使用列表中的任何成分的鸡尾酒:

SELECT *
FROM cock
WHERE id NOT IN (SELECT cock_id
                 FROM SB_recipe
                 WHERE ingr_id NOT IN (1,2,3,4,5,6,7))