2014-11-04 3 views
1

У меня есть две таблицы: 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 
+1

Чтобы присоединиться к вашим столам, вы должны использовать 'LEFT JOIN'. – vaso123

ответ

0

Вы можете использовать несколько условий в предложении JOIN: разделить их на логические операторы, как и в предложении WHERE (AND, OR и т. Д.). Ваша цель состоит в том, чтобы все условия были оценены как ИСТИНА или ЛОЖЬ, но в этом диапазоне вы можете сделать довольно много.

В вашем конкретном случае это довольно просто - используйте столбцы Страна, Штат и Город из обеих таблиц, чтобы установить соединение. Я установил некоторые данные образца в следующем запросе:

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 
+0

Это сделало трюк! Спасибо! – airtower

0

SELECT data.*, structure.storeID FROM data LEFT OUTER JOIN structure USING(storeID)

0
SELECT data.Country, data.State, data.City, data.Value, structure.StoreID 
FROM data 
LEFT OUTER JOIN structure USING(structure.StoreID) 
Смежные вопросы