Problema:SQL Server: dinámico, donde cláusula
Ajax-sugerir búsqueda en [n] ingredientes en recetas. Es decir: combinar recetas contra múltiples ingredientes.
Por ejemplo: SELECT Recipes using "flower", "salt"
produciría: "Pizza", "Bread", "Saltwater"
y así sucesivamente.
Tablas:
Ingredients [
IngredientsID INT [PK],
IngredientsName VARCHAR
]
Recipes [
RecipesID INT [PK],
RecipesName VARCHAR
]
IngredientsRecipes [
IngredientsRecipesID INT [PK],
IngredientsID INT,
RecipesID INT
]
consulta:
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')
Actualmente estoy construyendo mi consulta utilizando ASP.NET C#, debido a la naturaleza dinámica de la cláusula WHERE
.
Muerdo que tengo que construir la consulta en mi capa de código en lugar de usar un procedimiento almacenado/SQL puro, que en teoría debería ser mucho más rápido.
¿Tienen alguna idea de cómo movería toda la lógica de mi capa de código a SQL puro, o al menos cómo puedo optimizar el rendimiento de lo que estoy haciendo?
estoy pensando en la línea de tablas temporales:
paso uno: SELECT IngredientsID FROM Ingredients
y INSERT INTO temp-table
dos pasos: SELECT RecipesName FROM Recipes
se unieron a IngredientsRecipes
unido a temp-table.IngredientsID
Awesome news, Mike. ¡Gracias un montón! :) – roosteronacid