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