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

Sql server 如何在当前表中显示相关数据?,sql-server,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,

共有三个表格:

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) 
)
创建表T1\u(
Id int标识主键,
[Name]varchar(最大值)不为空,
姓氏varchar(max)不为空,
打字机,
电话号码
)
创建表T2_电话(
Id int标识主键,
TypePhone varchar(最大值)不为空,
电话号码字符(12)不为空且唯一,
[姓名],
姓
)
创建表T3(
T1_PhoneNumber int非空外键引用T1_HUMAN(Id),
T2_电话号码int非空外键引用T2_电话(Id),
主键(T1\U电话号码、T2\U电话号码)
)
正如你所看到的,这种关系是多对多的——一个人可以拥有多个电话,一个电话号码可以使用多个人

我需要以下资料:

  • 如果一个特定的电话号码(T2_phone.Id)被几个人使用, 该数据(姓名、姓氏)应以适当的格式显示 T2_电话表的字段

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


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

表格的结构很好

你的要求很奇怪,也不是很清楚。例如,如果一个人使用两部电话,您将有两对(typephone,phonenumber):您不能将它们放在一行中

我猜想您要么想要逗号分隔的值,要么想要多个字段。如果是这种情况,请不要更改表的当前正确结构,也不要违反第一个标准形式。相反,如果必须能够看到这些数据,请创建依赖于这些表的视图


如果您明确了您的确切需求,我们将很乐意提供答案。例如,如果A和B同时使用phone1和phone2,您希望查询结果如何?

如果我理解您的意图,我认为您不应该这样做。。。第一个表应该只包含与每个人相关的信息(id、姓名等),第二个表应该只包含与电话号码(id、电话号码等)和第三个表(桥接器)相关的信息只需要个人id和电话id。不要将姓名插入t2_电话表或t1_人员表。。。必要时使用连接。或者是一个风景。当数据发生变化时,将数据插入表本身会使事情变得更加复杂。我同意,这种设计打破了数据库规范化的基本原则。如果某人更改了姓名(例如,他们结婚了),你必须在很多地方更新姓名,而不仅仅是一个地方。我知道这是一项困难的任务,但我需要一个答案。请忽略与此数据库操作有关的其他问题。只要告诉我你可以如何实现它。这本身并不是一个“困难”的任务。这是一项不明智的任务。。。从理论上讲,您可以这样做(例如,当任何表插入/更新/删除数据时,都会触发初始更新…,或者有一个特定的插入或更新过程来执行您想要的操作,并且只插入/更新数据),但这比通常的(标准化)方法更复杂,也更不明智。无论是谁告诉您需要这样做,都可能不太了解关系数据库;我会往后推。@ZLK好的。非常感谢。这是摆在我面前的任务。我不能回答你们的问题,因为我自己也不明白。因此,我寻求帮助,向我解释我需要什么,并帮助我实现它。你有一个规范文本吗?