Android 需要获取查询的帮助吗

Android 需要获取查询的帮助吗,android,sqlite,Android,Sqlite,我有一张鸡尾酒表,包含Id和鸡尾酒名称,比如Id,范围在1-16之间。 这些鸡尾酒将由不同成分的任意组合制成。通常每种鸡尾酒由3种或更多成分制成 所以我创建了一个包含每种鸡尾酒细节的餐桌食谱。例如,id为1的鸡尾酒由id为-1、4、14的配料制成 现在假设我只有1-7种配料,任何随机的7种配料。cI需要获取所有由我拥有的配料创建的鸡尾酒 我尝试了下面的查询,但它返回我所有的鸡尾酒,因为每个鸡尾酒至少包含一种成分 SELECT * FROM SB_receipe WHERE ingr_id IN

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

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

现在假设我只有1-7种配料,任何随机的7种配料。cI需要获取所有由我拥有的配料创建的鸡尾酒

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

SELECT * FROM SB_receipe WHERE ingr_id IN (1,2,3,4,5,6,7) GROUP BY cock_id;
请帮我解决这个问题


提前感谢

您需要一个查询,返回只使用您现有成分的鸡尾酒

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

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))
或者,您不希望任何鸡尾酒使用列表中未列出的任何成分:

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))

给我们表格的结构。只需使用group和concat。在执行此操作之前,按IngredenId作为C排序,并且您的配料字符串也是ASC。