Я пытаюсь создать базу данных рецептов, где пользователь может вводить ингредиенты, и она выведет список потенциальных рецептов. Я создал три таблицы:
CREATE TABLE [dbo].[Ingredients] (
[Ingredient_ID] INT IDENTITY (1, 1) NOT NULL,
[Name] VARCHAR (50) NOT NULL,
PRIMARY KEY CLUSTERED ([Ingredient_ID] ASC)
);
CREATE TABLE [dbo].[recipes] (
[Recipe_ID] INT IDENTITY (1, 1) NOT NULL,
[Name] VARCHAR (50) NOT NULL,
[Instructions] TEXT NULL,
[Preperation_Time] FLOAT (53) NULL,
[Author] VARCHAR (50) NULL,
CONSTRAINT [PK.recipes] PRIMARY KEY CLUSTERED ([Recipe_ID] ASC)
);
CREATE TABLE [dbo].[RecipeIngredients] (
[Recipe_ID] INT NOT NULL,
[Ingredient_ID] INT NOT NULL,
PRIMARY KEY CLUSTERED ([Recipe_ID] ASC, [Ingredient_ID] ASC),
CONSTRAINT [FK_RecipeIngredients_To_Ingredients] FOREIGN KEY ([Ingredient_ID]) REFERENCES [dbo].[Ingredients] ([Ingredient_ID]),
CONSTRAINT [FK_RecipeIngredients_To_Recipes] FOREIGN KEY ([Recipe_ID]) REFERENCES [dbo].[recipes] ([Recipe_ID])
);
Я заполнил все таблицы и сейчас пытаюсь получить рецепты на основе введенных пользователем данных.
Я создал тестовый оператор SQL для извлечения всех рецептов, содержащих «яйца», используя:
string sqlString = "SELECT recipes.Name, Instructions, recipes.Preperation_Time, Author FROM RecipeIngredients" +
" INNER JOIN recipes ON recipes.Recipe_ID = RecipeIngredients.Recipe_ID" +
" INNER JOIN Ingredients ON Ingredients.Ingredient_ID = RecipeIngredients.Ingredient_ID" +
" WHERE ingredients.Name = 'Eggs'";
Данные не отображаются в моем dataGridView, но я не уверен, так ли это, потому что это утверждение неверно или другие факторы.
Правильно ли утверждение? Я не знаком с командой INNER JOIN.
Я также не уверен, как разработать оператор Sql, который может принимать различное количество имен ингредиентов, не создавая оператор Sql для каждой возможности.
Заранее спасибо, если вам нужно, чтобы я расширил что-то, о чем я просил, пожалуйста, спросите.