我有两个表:data
和structure
我试图查询以返回包含data
的所有列和structure
的单个列的记录集。我似乎无法弄清楚连接。这将在Access 2010中执行,所有字段都是字符串。
data
包含三列:Country
,State
和City
。 structure
还包含这三列以及storeID。如果要在data
和structure
之间连接国家,州,城市,则存在多对一的关系。我需要查询来选择data
中的所有字段和storeID
的新列。理想情况下,storeID
已经在data
,但不幸的是,我无法控制。
data
看起来像
Country State City Value
US FL MIA 1.0
US FL MIA 2.1
CA BC VAN 0.8
MX CH JUA 1.2
structure
看起来像
Country State City storeID
US FL MIA 4522
CA BC VAN 3866
MX CH JUA 8985
希望查询返回
Country State City Value storeID
US FL MIA 1.0 4522
US FL MIA 2.1 4522
CA BC VAN 0.8 3866
MX CH JUA 1.2 8985
答案 0 :(得分:0)
SELECT data.*, structure.storeID
FROM data
LEFT OUTER JOIN structure USING(storeID)
答案 1 :(得分:0)
SELECT data.Country, data.State, data.City, data.Value, structure.StoreID
FROM data
LEFT OUTER JOIN structure USING(structure.StoreID)
答案 2 :(得分:0)
您可以在JOIN子句中使用多个条件:将它们与布尔运算符分开,就像在WHERE子句中一样(AND,OR等)。您的目标是将所有条件评估为TRUE或FALSE,但在该范围内您可以做很多事情。
在您的具体情况下,它非常简单 - 使用两个表中的Country,State和City列进行连接。我在下面的查询中设置了一些示例数据:
DECLARE @Data TABLE (Country VARCHAR(2), State VARCHAR(2), City VARCHAR(3), Value DECIMAL(2,1))
DECLARE @Structure TABLE (Country VARCHAR(2), State VARCHAR(2), City VARCHAR(3), StoreID INT)
INSERT INTO @Data (Country, State, City, Value) VALUES ('US', 'FL', 'MIA', 1.0)
INSERT INTO @Data (Country, State, City, Value) VALUES ('US', 'FL', 'MIA', 2.1)
INSERT INTO @Data (Country, State, City, Value) VALUES ('CA', 'BC', 'VAN', 0.8)
INSERT INTO @Data (Country, State, City, Value) VALUES ('MX', 'CH', 'JUA', 1.2)
INSERT INTO @Structure (Country, State, City, StoreID) VALUES ('US', 'FL', 'MIA', 4522)
INSERT INTO @Structure (Country, State, City, StoreID) VALUES ('CA', 'BC', 'VAN', 3866)
INSERT INTO @Structure (Country, State, City, StoreID) VALUES ('MX', 'CH', 'JUA', 8985)
SELECT d.Country, d.State, d.City, d.Value, s.StoreID
FROM
@Data d
LEFT JOIN
@Structure s ON
d.Country = s.Country AND
d.State = s.State AND
d.City = s.City