【发布时间】:2017-05-21 19:32:42
【问题描述】:
我在为我的数据库编写查询时遇到问题。我在这里找到了许多类似的示例,并且已经尝试了好几个小时,但是没有一个示例可以帮助我弄清楚如何获得我想要的结果。我正在构建一个食谱应用程序,但我对与数据库有关的一切都很陌生。
我想挑选 1 种或更多 成分并获得匹配的食谱标题,如果可能,按最佳结果排序(包含最多成分的食谱)。
我尝试进行内部连接,尝试将食谱名称与匹配的成分结合在一起。
我已经尝试像这个人在这个问题中所做的那样做,因为我们有相同的设计: Recipe Database, search by ingredient
但即使我尝试像他/她那样加入,只是为了测试(而不是我想要的)它我得到:
ERROR: missing FROM-clause entry for table
这是我的桌子:
配方_成分
+-----------+---------------+
| recipe_id | ingredient_id |
+-----------+---------------+
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 1 | 5 |
| 1 | 6 |
| 1 | 7 |
| 2 | 1 |
| 2 | 8 |
| 2 | 9 |
| 2 | 10 |
| 2 | 11 |
+-----------+---------------+
食谱
+-----------+-----------------------+--------------+
| id | name | instructions |
+-----------+-----------------------+--------------+
| 1 | Guacamole | sample text |
| 2 | Grilled avocado toast | sample text |
+-----------+-----------------------+--------------+
成分
+------------------+
| id | name |
+----+-------------+
| 1 | avocado |
| 2 | tomato |
| 3 | chili |
| 4 | garlic |
| 5 | lemon |
| 6 | salt |
| 7 | black pepper|
| 8 | pesto |
| 9 | spinach |
| 10 | hard cheese |
| 11 | bread |
+------------------+
sql
create table Recipe (
id SERIAL PRIMARY KEY,
name CHAR(50),
prep_time CHAR(10),
instructions VARCHAR(2000));
create table Ingredient (
id SERIAL PRIMARY KEY,
name CHAR(50));
create table Recipe_Ingredient (
recipe_id INT NOT NULL,
ingredient_id INT NOT NULL,
FOREIGN KEY(recipe_id) REFERENCES Recipe(id),
FOREIGN KEY(ingredient_id) REFERENCES Ingredient(id));
【问题讨论】:
-
欢迎来到 Stack Overflow。请包括您已经尝试过的事情。你可以edit你的问题。
-
@simbabque 谢谢!已编辑:)
-
请复制并粘贴您当前的查询,
标签: sql database postgresql