我只是看不出我如何制作外键的问题,而且我真的很困惑为什么我总是得到错误的结果。这是我的工作台的屏幕截图
这是我的桌子:
这是我的图表
我也尝试标准化我的表格,我有点希望我的查询返回类似的结果,就像示例表(问题表)中那样,它只会显示 2 个结果,因为我想查询
where idsurvey = 1
我在这个中做了图像:
我的问题是,如何修复我的外键,以便我想要查询
select * from survey.survey, survey.questions where idsurvey = 1
它只会返回 2 行? (基于工作台屏幕截图中的示例数据)
任何对我的图表的评论和建议也将不胜感激。
当
from
子句中有两个表时,第一个表中的每一行都与第二个表中的每个表匹配。这称为笛卡尔积。通常,这不是您想要的行为(就像在本例中不是这样),您可以使用条件告诉数据库如何匹配这两个表:
SELECT *
FROM survey.survey s, survey.questions q
WHERE s.idsurvey = q.survey_id AND idsurvey = 1
虽然这应该可行,但在同一个
from
子句中使用多个表已经过时了。您可能应该使用显式的 join
子句来代替:
SELECT *
FROM survey.survey s
JOIN survey.questions q ON s.idsurvey = q.survey_id
WHERE idsurvey = 1