【发布时间】:2022-01-25 10:37:48
【问题描述】:
我有这两张桌子。订阅者表包含订阅者 ID 和他的电话号码。 NetworkP2P 内容 SubscriberID,他呼叫的 AddresseeNumber 以及呼叫开始时间和结束时间。
TABLE Subscriber
(
SubscriberID int,
PhoneNumber char(10)
)
TABLE NetworkP2P
(
SubscriberID int,
AddresseeNumber char(10),
CallStart datetime,
CallEnd datetime
)
示例数据:
订阅者
SubscriberID | PhoneNumber
1 613-555-0156
2 613-555-0112
3 613-555-0119
4 613-555-0182
网络P2P
SubscriberID | AddresseeNumber | CallStart | CallEnd
1 613-555-0182 2013-02-03 08:27:00.000 2013-02-03 08:30:54.000
1 613-555-0119 2013-02-03 10:11:26.000 2013-02-03 10:14:26.000
1 613-555-3333 2013-02-03 15:13:58.000 2013-02-03 15:18:13.000
2 613-555-0156 2013-02-05 23:21:50.000 2013-02-05 23:24:50.000
2 613-555-0119 2013-04-05 23:21:50.000 2013-04-05 23:26:50.000
3 613-555-0112 2013-06-05 23:21:50.000 2013-06-05 23:26:50.000
并非所有电话号码都与订阅者拥有的电话号码匹配。
如果我希望输出在给定月份内相互联系的订阅者,即订阅者 1 调用订阅者 2,反之亦然,我将如何处理?
所需输出的示例:
Caller | Reciever | CallerPhone | RecieverPhone
1 4 613-555-0156 613-555-0182
1 3 613-555-0156 613-555-0119
2 1 613-555-0112 613-555-0156
2 3 613-555-0112 613-555-0119
3 2 613-555-0119 613-555-0112
【问题讨论】:
-
看起来你想要加入。你试过什么?究竟是什么问题?
-
这看起来是一个有缺陷的模型,您肯定会使用 callerID 和 receiverID 记录信息 - 该号码不应该是加入条件 - 当有人更改他们的号码时会发生什么?
-
努力改进我提供的信息。我知道数据模型很奇怪,它没有投入生产,在创建时已经存在错误,我只是想教育自己。
标签: sql sql-server tsql