SQL - 如何获取链接数据?

时间:2012-11-01 16:13:12

标签: sql orm

我有4个为我自动生成的表:

  • 用户
  • 挑战
  • 运动
  • Challenge_Exercise

一个用户可能有很多挑战,一个挑战将有很多练习。

我注意到Challenge表中有一个对它的父用户(称为user_id)的引用,但是练习在它的表中没有引用Challenge;他们的关系作为Challenge_id和exercise_id存储在Challenge_Exercise中。

我的问题是,我如何取出与特定用户相关的每项练习?例如,id = 1的用户?

1 个答案:

答案 0 :(得分:0)

SELECT *
FROM   excerise,
       challenge_excerise,
       challenge
WHERE  challenge.user_id = 1
       AND challenge_excerise.challenge_id = challenge.id
       AND challenge_excerise.exercise_id = excercise.id

我在这里做的是join,您也可以使用inner joins明确地执行此操作(如果您想了解更多信息,可以使用谷歌)。

这个表是必需的,因为你有一个many to many关系,这意味着每个挑战可以有多个练习,但每个练习都有多个挑战。这是制作额外表格的标准,因此您没有冗余数据,此表通常称为junction table

如果你想要背景只是google它,那么这个话题就有很多数据。