sql >> データベース >  >> RDS >> Mysql

SQL-クエリは、おそらくINとNOTINを使用して個別のIDを見つける必要がありました

    Select Distinct ...
    From Recipes As R
    Where R.ingredient in(ingredient_a, ingredient_b...)
        And Not Exists(
                        Select 1
                        From Recipes As R2
                        Where R2.Recipe = R.Recipe
                            And R2.Ingredient In(ingredient_d)
                        )
    

    Jeffrey L Whitledgeが述べたように、上記のクエリは、少なくとも1つあるレシピを返します。 目的のリストに成分が含まれ、不要なリストには含まれていません。ただし、すべてを含むレシピを返したい場合 希望するリストに含まれる材料と、不要なリストに含まれる可能性のある材料はありません:

    Select Distinct ...
    From Recipes As R
    Where Exists    (
                    Select 1
                    From Recipes As R2
                    Where R2.Recipe = R.Recipe
                        And R2.ingredient in(ingredient_a, ingredient_b...)
                    Having Count(*) = @CountOfPassedIngredients
                    )
        And Not Exists(
                        Select 1
                        From Recipes As R2
                        Where R2.Recipe = R.Recipe
                            And R2.Ingredient In(ingredient_d)
                        )
    

    このシナリオでは、最初に目的の材料の数を決定する必要があります。




    1. 3つおきのdivのphpwhileループ変数

    2. MySQL:テーブルのメタデータロックを永続的に待機しています

    3. mysql PASSWORD関数を使用して、mysqli_queryからmysqliプリペアドステートメントに変換します

    4. アンドロイドルームデータベースとの1対多の関係でフィルタリングする方法