SQL Server: Dynamiczna klauzula gdzie
Problem:
Ajax zasugeruj wyszukiwanie w [n] składniki w przepisach. To znaczy: dopasuj przepisy do wielu składników.
Na przykład:SELECT Recipes using "flower", "salt"
wytworzy:"Pizza", "Bread", "Saltwater"
i tak dalej.
Tabele:
Ingredients [
IngredientsID INT [PK],
IngredientsName VARCHAR
]
Recipes [
RecipesID INT [PK],
RecipesName VARCHAR
]
IngredientsRecipes [
IngredientsRecipesID INT [PK],
IngredientsID INT,
RecipesID INT
]
Pytanie:
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')
Obecnie konstruuję moje zapytanie przy użyciu ASP.NET C # ze względu na dynamiczną naturęWHERE
klauzula.
Ugryzam, że muszę skonstruować zapytanie w mojej warstwie kodu zamiast używać procedury składowanej / czystego SQL, która teoretycznie powinna być znacznie szybsza.
Czy zastanawialiście się, jak przenieść całą logikę z mojej warstwy kodu do czystego SQL, a przynajmniej jak zoptymalizować wydajność tego, co robię?
Mam na myśli tabele tymczasowe:
Krok pierwszy: SELECT IngredientsID FROM Ingredients
iINSERT INTO temp-table
Krok drugi: SELECT RecipesName FROM Recipes
dołączył doIngredientsRecipes
dołączył dotemp-table.IngredientsID