Problem:SQL Server: Dynamiczne gdzie klauzula
Ajax sugerują-szukaj w [n] składniki receptur. To znaczy: dopasuj przepisy do wielu składników.
Na przykład: SELECT Recipes using "flower", "salt"
będzie produkować: "Pizza", "Bread", "Saltwater"
i tak dalej.
Stoły:
Ingredients [
IngredientsID INT [PK],
IngredientsName VARCHAR
]
Recipes [
RecipesID INT [PK],
RecipesName VARCHAR
]
IngredientsRecipes [
IngredientsRecipesID INT [PK],
IngredientsID INT,
RecipesID INT
]
zapytania:
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')
Jestem obecnie buduje mojej kwerendy przy użyciu ASP.NET C# ze względu na dynamiczny charakter klauzuli WHERE
.
Ugryź, że muszę skonstruować zapytanie w mojej warstwie kodu, zamiast używać procedury składowanej/czystego SQL, która teoretycznie powinna być znacznie szybsza.
Czy macie jakieś przemyślenia na temat tego, jak przenieść całą logikę z mojej warstwy kodu do czystego SQL, a przynajmniej jak mogę zoptymalizować wydajność tego, co robię?
myślę wzdłuż linii tabel tymczasowych:
Krok pierwszy: SELECT IngredientsID FROM Ingredients
i INSERT INTO temp-table
Krok drugi: SELECT RecipesName FROM Recipes
połączone z IngredientsRecipes
połączone z temp-table.IngredientsID
Niesamowita wiadomość, Mike. Wielkie dzięki! :) – roosteronacid