访问查询显示来自不同州的城市的信息

时间:2015-01-31 16:37:06

标签: sql ms-access

我正在尝试创建一个查询,将税率纳入整个美国的交易中。我遇到的问题是,有多个州拥有相同的县和城市,并且提取不同的费率。示例Decatur TX将提取Decatur AL率。我该怎么做才能阻止这个?

SELECT 
Query1.STORE_NUM, Query1.ST_CD, 
Query1.[Juris Cd], Query1.CITY_NM, Query1.[Document Date], 
Query1.[Amount in local currency], Query1.[Rental Tax], 
Query1.[State Rate], Query1.[County Rate],
IIf(IsNull([City_Rates].[City_Rate]),0,[City_Rates].[City_Rate]) AS [City Rate]

FROM 
Query1 LEFT JOIN City_Rates ON Query1.CITY_NM = City_Rates.City

WHERE 
(((Query1.ST_CD)="GA"));

2 个答案:

答案 0 :(得分:2)

据推测,每个表中都有一个州代码,所以你也应该join

FROM Query1 LEFT JOIN
     City_Rates
     ON Query1.CITY_NM = City_Rates.City AND
        Query1.ST_CD = City_Rates.ST_CD

我认为当两个引用表时,访问将允许onleft join的多个条件。如果没有,则近似为:

FROM Query1 LEFT JOIN
     City_Rates
     ON Query1.CITY_NM = City_Rates.City
WHERE (Query1.ST_CD = City_Rates.ST_CD or City_Rates.City IS NULL)

答案 1 :(得分:1)

您基于名称加入City。但名称不足以唯一地标识一个城市。

如果City和transactions表都包含状态,则可以加入两列:

LEFT JOIN City_Rates 
  ON Query1.CITY_NM = City_Rates.City
     AND Query1.ST_CD = City_Rates.StateCode