如何通过多个表查找不同的城市名称
How to find different names of cities via several tables
我有五个 table 包含有关银行详细信息的人工数据。
我的意图是 select 仅发生在与其所属客户所在城市不同的城市的交易。
为了做到这一点,我写了这个查询:
SELECT c.Cityid,c.FirstName,c.LastName,ci.Name
FROM dbo.Customer c
INNER JOIN dbo.City ci ON ci.ID=c.Cityid
INNER JOIN dbo.Account acc ON acc.CustomerId=c.Id
INNER JOIN dbo.AccountDetails accde ON accde.AccountId=acc.Id
INNER JOIN dbo.Location lo ON lo.LocationTypeId=accde.LocationId
WHERE c.Cityid <>lo.CityId
但不幸的是,我得到的结果并不好,我的代码列出的数据与客户城市相同,而不是交易城市。可能我对 WHERE 表达式有一些错误。
谁能帮我解决这个问题?
附件中还有数据库中 tables 的图表。
此外,我在这里放了来自客户 table.In 的屏幕截图,最后一列是用黄色标记的 CityId。
每个客户在城市中都有一些交易,这与他们的 cities.For 示例中 ID 为 1 的客户不同,我需要此客户拥有的所有其他城市 transaction.In 订单才能实现此目的我将客户 table 与帐户详细信息和帐户 table.And 联系起来,最后我需要为每个客户提供与他们的城市不同的城市。我也会在这里放置 Location table
如果您也想显示交易城市,请重新加入table城市:
SELECT
c.FirstName,
c.LastName,
ci.Name as customer_city,
tci.Name as transaction_city
FROM dbo.Customer c
JOIN dbo.City ci ON ci.ID=c.Cityid
JOIN dbo.Account acc ON acc.CustomerId=c.Id
JOIN dbo.AccountDetails accde ON accde.AccountId=acc.Id
JOIN dbo.Location lo ON lo.LocationTypeId=accde.LocationId
JOIN dbo.City tci ON tci.ID=lo.Cityid -- Added join to city from location
WHERE c.Cityid <>lo.CityId
我从 Location 添加了另一个到 City 的连接。
我还删除了 CityId 列,因为通常代理 ID 没有意义。
我有五个 table 包含有关银行详细信息的人工数据。
我的意图是 select 仅发生在与其所属客户所在城市不同的城市的交易。
为了做到这一点,我写了这个查询:
SELECT c.Cityid,c.FirstName,c.LastName,ci.Name
FROM dbo.Customer c
INNER JOIN dbo.City ci ON ci.ID=c.Cityid
INNER JOIN dbo.Account acc ON acc.CustomerId=c.Id
INNER JOIN dbo.AccountDetails accde ON accde.AccountId=acc.Id
INNER JOIN dbo.Location lo ON lo.LocationTypeId=accde.LocationId
WHERE c.Cityid <>lo.CityId
但不幸的是,我得到的结果并不好,我的代码列出的数据与客户城市相同,而不是交易城市。可能我对 WHERE 表达式有一些错误。
谁能帮我解决这个问题?
附件中还有数据库中 tables 的图表。
此外,我在这里放了来自客户 table.In 的屏幕截图,最后一列是用黄色标记的 CityId。
每个客户在城市中都有一些交易,这与他们的 cities.For 示例中 ID 为 1 的客户不同,我需要此客户拥有的所有其他城市 transaction.In 订单才能实现此目的我将客户 table 与帐户详细信息和帐户 table.And 联系起来,最后我需要为每个客户提供与他们的城市不同的城市。我也会在这里放置 Location table
如果您也想显示交易城市,请重新加入table城市:
SELECT
c.FirstName,
c.LastName,
ci.Name as customer_city,
tci.Name as transaction_city
FROM dbo.Customer c
JOIN dbo.City ci ON ci.ID=c.Cityid
JOIN dbo.Account acc ON acc.CustomerId=c.Id
JOIN dbo.AccountDetails accde ON accde.AccountId=acc.Id
JOIN dbo.Location lo ON lo.LocationTypeId=accde.LocationId
JOIN dbo.City tci ON tci.ID=lo.Cityid -- Added join to city from location
WHERE c.Cityid <>lo.CityId
我从 Location 添加了另一个到 City 的连接。
我还删除了 CityId 列,因为通常代理 ID 没有意义。