如何在当前表中显示相关数据?

时间:2019-03-21 21:05:18

标签: sql-server

有三个表:

CREATE TABLE T1_HUMAN (
    Id int IDENTITY PRIMARY KEY,
    [Name] varchar(max) NOT NULL,
    Surname varchar(max) NOT NULL,
    TypePhone <???>, 
    PhoneNumber <???> 
)

CREATE TABLE T2_PHONE (
    Id int IDENTITY PRIMARY KEY,
    TypePhone varchar(max) NOT NULL, 
    PhoneNumber char(12) NOT NULL UNIQUE, 
    [Name] <???>,
    Surname <???>
)

CREATE TABLE T3 (
     T1_PhoneNumber int NOT NULL FOREIGN KEY REFERENCES T1_HUMAN(Id),
     T2_PhoneNumber int NOT NULL FOREIGN KEY REFERENCES T2_PHONE(Id),
     PRIMARY KEY(T1_PhoneNumber, T2_PhoneNumber) 
)

如您所见,这种关系是多对多的-一个人可以拥有多个电话,一个电话号码可以使用多个人。

我需要以下内容:

  • 如果多个人使用了特定的电话号码(T2_PHONE.Id), 此数据(名称,姓氏)应显示在适当的位置 T2_PHONE表的字段。

  • 如果一个特定的人(T1_HUMAN.Id)使用多个电话号码,则此 数据(TypePhone,PhoneNumber)需要显示在 T1_HUMAN表的适当字段。

如何更改表格以满足上述要求?

1 个答案:

答案 0 :(得分:1)

表的结构很好。

您要的内容很奇怪,而且不清楚。例如,如果一个人使用2部电话,您将有2对(键入电话,电话号码):您不能将它们放在一行中。

我怀疑您需要逗号分隔的值,还是需要多个字段。在这种情况下,请 NOT 更改表的当前正确结构,并违反第一种规范形式。相反,如果您必须能够看到这些数据,请创建依赖于这些表的视图。

如果您明确想要什么,我们将很乐意提供答案。例如,如果A和B的人共享phone1和phone2,您希望查询如何显示?