-1

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

  • 用户
  • 挑战
  • 锻炼
  • 挑战_运动

一位用户可能有许多挑战,而一个挑战将有许多练习。

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

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

4

1 回答 1

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.

如果你想要背景,只需谷歌它,这个主题有大量数据。

于 2012-11-01T16:18:03.130 回答