Я создаю базу данных рецептов коктейлей, и у меня есть следующие таблицы со следующим содержанием:
select * from CocktailName;
+----------+-------------+
| RecipeID | RecipeName |
+----------+-------------+
| 1 | Bahama Mama |
+----------+-------------+
select * from Juices;
+----------+-----------------+-------------+
| RecipeID | JuiceName | JuiceAmount |
+----------+-----------------+-------------+
| 1 | Orange Juice | 30ml |
| 1 | Pineapple Juice | 30ml |
+----------+-----------------+-------------+
У меня есть еще 3 таблицы с названиями «Духи», «Фрукты» и «Сиропы», все они отформатированы как и моя таблица соков выше, и все они имеют столбец RecipeID, который служит внешним ключом для столбца RecipeID из моей таблицы CocktailName.
Моя проблема в том, что когда у меня есть рецепты, содержащие несколько ингредиент (например, в моей таблице выше рецепт Bahama Mama содержит два типа соков), мой запрос возвращает следующий ответ:
+-------------+------------+--------------+-----------+-------------+-----------------+-------------+-----------+-------------+
| RecipeName | SpiritName | SpiritAmount | SyrupName | SyrupAmount | JuiceName | JuiceAmount | FruitName | FruitAmount |
+-------------+------------+--------------+-----------+-------------+-----------------+-------------+-----------+-------------+
| Bahama Mama | Rum | 30ml | Grenadine | 15ml | Orange Juice | 30ml | N/A | N/A |
| Bahama Mama | Rum | 30ml | Grenadine | 15ml | Pineapple Juice | 30ml | N/A | N/A |
+-------------+------------+--------------+-----------+-------------+-----------------+-------------+-----------+-------------+
Мой вопрос: есть ли способ вернуть мой результат как:
RecipeName| SpiritName | SpiritAmount| SyrupName| SyrupAmount| JuiceName| JuiceAmount|JuiceName| JuiceAmount| FruitName| FruitAmount
со всем запросом в одной строке, где различные названия и количества ингредиентов, даже если они одного типа ингредиента, отображаются рядом друг с другом.
Мой запрос:
select distinct CocktailName.RecipeName, Spirits.SpiritName, Spirits.SpiritAmount, Syrups.SyrupName,
Syrups.SyrupAmount, Juices.JuiceName, Juices.JuiceAmount, Fruits.FruitName,Fruits.FruitAmount from
CocktailName join Spirits join Syrups join Juices join Fruits join UserIngredients on
Spirits.SpiritName like UserIngredients.Ingredient and Spirits.RecipeID = CocktailName.RecipeID or
Syrups.SyrupName like UserIngredients.Ingredient and Syrups.RecipeID = CocktailName.RecipeID or
Juices.JuiceName like UserIngredients.Ingredient and Fruits.RecipeID = CocktailName.RecipeID or
Fruits.FruitName like UserIngredients.Ingredient and Fruits.RecipeID = CocktailName.RecipeID where
UserIngredients.UserID = 1;