如何创建一个可以识别许多俱乐部中每个人俱乐部的视图?

时间:2017-10-17 14:14:51

标签: sql database ms-access

我正在制作俱乐部成员的数据库,我发现了这个问题。

假设:

  1. 有些人想加入俱乐部。
  2. 让我们想象一下 10 俱乐部。
  3. 每个选择加入 1至5个俱乐部
  4. 每位俱乐部的管理员都会提供所有加入其俱乐部的人的数据。

    (例如:如果A加入足球俱乐部,那么足球俱乐部的管理员将有他的名字,但他不知道A是否加入另一个俱乐部。)

  5. 我有所有选择加入俱乐部的人的数据。(从每个俱乐部的管理员处检索。)

    如果A加入3个俱乐部,这意味着我有3个桌子有A的名字。

  6. 我创建了一个存储每个俱乐部名称的表。

  7. 问题

    如果不仅有A,但是这样的100人,那么我怎样才能创建一个有人名的桌子以及他们加入的所有俱乐部?

    我可以创建一个格式如下的视图表:
    personID,personName,club1,club2,club3,club4,club5(club#可以为null。)

    OR

    personID,personName,allOfClubs

    OR

    我是否必须手动检查每个人?

2 个答案:

答案 0 :(得分:1)

您不会将数据存储在数据库中 - 这就是Excel电子表格的思维方式。 你应该至少有三张桌子,如果一个俱乐部可以有一个以上的管理员,可能有四张桌子。

您的桌子应该是人员,俱乐部,会员资格。

会员资格将是一个联结表,您可以存储一个PersonId,一个ClubID,可能还有其他一些信息。加入日期等。

通过这种方式,您可以拥有自己喜欢的俱乐部成员。

答案 1 :(得分:0)

首先你需要UNION所有的俱乐部桌子:

 SELECT 'football' as club, person FROM club1 UNION ALL
 SELECT 'rugby'    as club, person FROM club2 UNION ALL

 ....
 SELECT 'tennis'   as club, person FROM clubN

然后使用PivotTable