SQL Server: Dynamische Where-Klausel

Problem:

Ajax Suggest-Search auf [n] Zutaten in Rezepten. Das heißt: Rezepte mit mehreren Zutaten abgleichen.

Zum Beispiel:SELECT Recipes using "flower", "salt" würde produzieren:"Pizza", "Bread", "Saltwater" und so weiter.

Tabellen:

Ingredients [
    IngredientsID INT [PK],
    IngredientsName VARCHAR
]

Recipes [
    RecipesID INT [PK],
    RecipesName VARCHAR
]

IngredientsRecipes [
    IngredientsRecipesID INT [PK],
    IngredientsID INT,
    RecipesID INT
]

Abfrage:

SELECT
    Recipes.RecipesID,
    Recipes.RecipesName,
    Ingredients.IngredientsID,
    Ingredients.IngredientsName
FROM
    IngredientsRecipes

    INNER JOIN Ingredients
    ON IngredientsRecipes.IngredientsID = Ingredients.IngredientsID

    INNER JOIN Recipes
    ON IngredientsRecipes.RecipesID = Recipes.RecipesID
WHERE
    Ingredients.IngredientsName IN ('salt', 'water', 'flower')

Ich konstruiere derzeit meine Abfrage mit ASP.NET C # aufgrund der dynamischen Natur derWHERE Klausel.

Ich gebe zu, dass ich die Abfrage in meiner Code-Ebene erstellen muss, anstatt eine gespeicherte Prozedur / reines SQL zu verwenden, was theoretisch viel schneller sein sollte.

Haben Sie schon darüber nachgedacht, wie ich die gesamte Logik von meiner Code-Ebene auf reines SQL umstellen oder zumindest die Leistung meiner Arbeit optimieren kann?

Ich denke an temporäre Tabellen:

Schritt eins: SELECT IngredientsID FROM Ingredients undINSERT INTO temp-table

Schritt zwei: SELECT RecipesName FROM Recipes verbunden mitIngredientsRecipes verbunden mittemp-table.IngredientsID

Antworten auf die Frage(3)

Ihre Antwort auf die Frage