2017-02-20 4 views
1

Я следующие первенствовать таблицы:левое внешнее соединение Microsoft Excel Выпуск запрос,

стола:

week Item qty 

wk1  a  1 
wk2  b  1 
wk3  b  2 

и таблица: W

week Item sales 
wk1 a 11 
wk2 b 22 
wk1 b 33 
wk2 b 4 
wk3 b 5 

Я хотел бы применить LEFT JOIN для возврата всех строк из левой таблицы (w) с соответствующими строками в правой таблице (a) по следующему запросу

SELECT `a$`.week, `a$`.Item, `a$`.qty, `w$`.sales 
FROM {oj `C:\Users\User\Desktop\test.xlsx`.`w$` `w$` 
LEFT OUTER JOIN `C:\Users\User\Desktop\test.xlsx`.`a$` `a$` 
    ON `a$`.week = `w$`.week} 
WHERE `w$`.Item = `a$`.Item 

Однако я не получаю желаемого результата

week Item qty sales 
wk1 a 1 11 
wk2 b 1 4 
wk2 b 1 22 
wk3 b 2 5 

как следующая строка отсутствует

wk1 b  33 

Любые идеи? или рекомендации по устранению этой проблемы?

Заранее спасибо Костаса

+0

Сделайте «ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ». Вам не хватает 'wk1 b', потому что его нет в' Table a'. Удалите предложение 'Where' и добавьте это сравнение' Item' в оператор 'Join' –

ответ

0

Вы на самом деле внутреннее соединение не внешнее соединение. Поскольку вы использовали

WHERE w$.Item = a$.Item 

Во-первых, у вас есть записи в том числе продаж 33.

Во-вторых, вы удалили рекорд продаж составляет 33 этим условием.

Таким образом, удаление этого условия будет без проблем.

+0

Столбцы хрустят ... Это фактически продажа 33. –

+0

@WEI_DBA Я не понимаю, что вы имеете в виду. Но ваш ответ и мой ответ имеют тот же результат. Поскольку w table имеет все строки, которые существуют в таблице. И он спросил, почему таблица результатов не включает Sales 33, поэтому я отвечаю, почему он ее потерял. – doctorgu

+0

Да, я думал, вы имели в виду 33 номер предмета. ;-) –

0

У вас есть предложение where, которое противоречит вашему ожидаемому результату. Удалите предложение where, и вы получите ожидаемый результат.

Смежные вопросы