レシピ データベースを想像してみてください。次の 3 つのテーブルがあります。
tbl_recipes、tbl_recipe_ingredients、および tbl_ingredients。
食材は野菜でも肉でもかまいません。(ingtype フィールド)
2 つのクエリが必要です。1 つは野菜と肉を含むすべてのレシピを取得するためのもので、もう 1 つは野菜のみを取得するためのものです。
このクエリを試してみましたが、正確な数の結果が返されません。
SELECT DISTINCT tbl_recipes.title
FROM tbl_recipe_ingredients
INNER JOIN tbl_recipes ON tbl_recipe_ingredients.recipe_id = tbl_recipes.id
INNER JOIN tbl_ingredients ON tbl_recipe_ingredients.ingredient_id = tbl_ingredients.id
WHERE tbl_ingredients.ingtype = 'vegetable'
GROUP BY tbl_recipes.id
HAVING COUNT( DISTINCT tbl_ingredients.ingtype ) = 1
機能していないもう 1 つのことは、Count を = 2 (各成分タイプの 1 つ以上を意味する) に変更すると、結果が得られないことです。
これはトップ N タイプのクエリのバリエーションだと思いますが、このクエリのどこに問題があるのかわかりません。
助けていただければ幸いです。