如何连接3个表和计算数据示例

enyaitl3  于 2022-09-18  发布在  Java
关注(0)|答案(1)|浏览(155)

我有三张table:

  • Trips,包含TripRecordIDTripName
  • TripRecords,包含该行程记录的TripRecordIDCustID和其他详细信息
  • Customers,包含CustID和客户信息

我想要的是一个视图,列出每个客户与Trip表中存在的每一次旅行的一行,以及该客户存在多少旅行记录的计数(可以是0),例如。

如果有2次行程和4个客户,该视图将列出每个客户两次,一次用于行程1,一次用于行程2。在每一行中,它将计算该客户具有与指定行程匹配的记录的次数。如果我们再增加一次行程,每个客户将得到3排,以此类推。

例如:

我正在努力编写查询。此查询返回每个客户,但不是每个行程的一行(因为并非所有客户都在所有行程中):

SELECT c.CustID, t.TripID, COUNT (tr.TripID) AS TripCount
FROM dbo.Customers c
LEFT OUTER JOIN dbo.TripRecords tr ON tr.CustID = c.CustID
LEFT OUTER JOIN dbo.Trips t ON tr.TripID = t.TripID
GROUP BY c.CustID, t.TripID
s8vozzvw

s8vozzvw1#

根据您需要的数据构建您的查询。因此,如果您想为每个客户安排一行,则每次旅行都需要CROSS JOIN,它提供了每种组合。然后,您可以执行LEFT JOIN来查看每种组合发生了多少次。

SELECT c.CustID, t.TripID, COUNT(tr.TripID) AS TripCount
FROM dbo.Customers c
CROSS JOIN dbo.Trips t
LEFT OUTER JOIN dbo.TripRecords tr ON tr.TripID = t.TripID AND tr.CustID = c.CustID
GROUP BY c.CustID, t.TripID

相关问题