我只是看不到我如何制作外键的问题,我真的很困惑为什么我总是得到错误的结果。这是我的工作台截图
这是我的桌子:
这是我的图
我也试图规范化我的表,我还希望查询返回类似结果的示例表(Questions表),因为我想查询where idsurvey = 1
,所以该表仅显示2个结果。我在这张图片中做了:
我的问题是,如何修复我的外键,以便查询?
select * from survey.survey, survey.questions where idsurvey = 1
它只会返回2行吗? (基于工作台屏幕快照中的示例数据)
对图表的任何评论和建议也将不胜感激。
答案 0 :(得分:0)
当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