Problème:SQL Server: dynamique clause where
Ajax suggère-recherche sur [n] ingrédients dans les recettes. C'est-à-dire: associer des recettes à plusieurs ingrédients. Par exemple, SELECT Recipes using "flower", "salt"
produirait: "Pizza", "Bread", "Saltwater"
et ainsi de suite.
Tables:
Ingredients [
IngredientsID INT [PK],
IngredientsName VARCHAR
]
Recipes [
RecipesID INT [PK],
RecipesName VARCHAR
]
IngredientsRecipes [
IngredientsRecipesID INT [PK],
IngredientsID INT,
RecipesID INT
]
Requête:
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')
Je construis actuellement ma requête en utilisant ASP.NET C# en raison de la nature dynamique de la clause WHERE
.
Je mords que je dois construire la requête dans ma couche de code au lieu d'utiliser une procédure stockée/SQL pur, ce qui en théorie devrait être beaucoup plus rapide. Avez-vous des idées sur la façon dont je déplacerais toute la logique de ma couche de code vers du SQL pur, ou du moins comment optimiser la performance de ce que je fais?
Je pense le long des lignes de tables temporaires:
Première étape: SELECT IngredientsID FROM Ingredients
et INSERT INTO temp-table
Étape deux: SELECT RecipesName FROM Recipes
rejoint avec IngredientsRecipes
joint à temp-table.IngredientsID
Super nouvelles, Mike. Merci beaucoup! :) – roosteronacid