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

问题描述 投票:0回答:1

有三个表:

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)使用多个电话号码,则需要在T1_HUMAN表的相应字段中显示此数据(TypePhone,PhoneNumber)。

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

sql-server
1个回答
1
投票

表格的结构很好。

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

我怀疑你要么需要逗号分隔值,要么需要多个字段。如果是这种情况,请不要改变当前正确的表格结构并违反第一个正常表格。相反,如果您必须能够查看这些数据,请创建依赖于这些表的视图。

如果您清楚了解您的确切需求,我们将很乐意为您提供答案。例如,如果A和B人共用phone1和phone2,您希望查询的外观如何?

© www.soinside.com 2019 - 2024. All rights reserved.