LEFT JOIN на нескольких столах - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь создать левое соединение в MS Access, в котором есть два условия.Однако при запуске кода ниже я получаю «JOIN выражение не поддерживается».Кто-нибудь знает, как исправить?Проблема в части "d.brand = c.brand".Но я не знаю, как это переписать ...

SELECT 
     a.WeekNo, a.EssbaseCustomer, a.SKU, a.SKU_Description, c.[Brand], d.Index, 
     a.Promo_Kg, a.Promo_NSV, b.NonPromo_NSVkg, a.Promo_NSV/a.Promo_kg AS 
     Promo_NSVkg
FROM 
     ((Actuals AS a LEFT JOIN PriceList AS b ON (a.SKU=b.SKU) 
     AND (a.EssbaseCustomer=b.EssbaseCustomer)) LEFT JOIN Map_SKU 
     AS c ON a.SKU=c.SKU) LEFT JOIN Seasonality AS d ON a.Weekno=d.Weekno 
     AND d.brand=c.Brand
WHERE 
     a.Promo_Kg>0;

Ответы [ 3 ]

0 голосов
/ 25 января 2019

Парантезы излишни.Кроме того, я переместил предложение where в первое левое объединение, которое там уместно

SELECT 
     a.WeekNo, a.EssbaseCustomer, a.SKU, a.SKU_Description, c.[Brand], d.Index, 
     a.Promo_Kg, a.Promo_NSV, b.NonPromo_NSVkg, a.Promo_NSV/a.Promo_kg AS 
     Promo_NSVkg
FROM Actuals AS a
LEFT JOIN PriceList AS b 
  ON a.SKU=b.SKU AND a.EssbaseCustomer = b.EssbaseCustomer and a.Promo_Kg>0
LEFT JOIN Map_SKU AS c 
  ON a.SKU=c.SKU 
LEFT JOIN Seasonality AS d 
  ON a.Weekno=d.Weekno 
 AND d.brand=c.Brand
0 голосов
/ 25 января 2019

Спасибо, что подумали со мной!Этот код от Йоханнеса не работает (мне пришлось поставить круглые скобки, как того требует MS Access):

SELECT a.WeekNo,
   a.EssbaseCustomer,
   a.SKU,
   a.SKU_Description,
   c.[Brand],
   d.Index,
   a.Promo_Kg,
   a.Promo_NSV,
   b.NonPromo_NSVkg,
   a.Promo_NSV/a.Promo_kg AS Promo_NSVkg
FROM (((Actuals AS a
    LEFT JOIN PriceList AS b ON a.SKU=b.SKU AND a.EssbaseCustomer=b.EssbaseCustomer)
    LEFT JOIN Map_SKU AS c ON a.SKU=c.SKU)
    LEFT JOIN Seasonality AS d ON a.Weekno=d.Weekno AND d.brand=c.Brand)
WHERE a.Promo_Kg>0;

Но при удалении «d.brand = c.Brand» это работает.Так что что-то не так.

0 голосов
/ 25 января 2019

Я думаю, что проблема в неуместных скобках

SELECT a.WeekNo,
       a.EssbaseCustomer,
       a.SKU,
       a.SKU_Description,
       c.[Brand],
       d.Index,
       a.Promo_Kg,
       a.Promo_NSV,
       b.NonPromo_NSVkg,
       a.Promo_NSV/a.Promo_kg AS Promo_NSVkg
FROM ((Actuals AS a
       LEFT JOIN PriceList AS b ON (a.SKU=b.SKU) AND (a.EssbaseCustomer=b.EssbaseCustomer))
       LEFT JOIN Map_SKU AS c ON a.SKU=c.SKU
       LEFT JOIN Seasonality AS d ON a.Weekno=d.Weekno AND d.brand=c.Brand)
WHERE a.Promo_Kg>0;

Или еще лучше, без скобок:

SELECT a.WeekNo,
       a.EssbaseCustomer,
       a.SKU,
       a.SKU_Description,
       c.[Brand],
       d.Index,
       a.Promo_Kg,
       a.Promo_NSV,
       b.NonPromo_NSVkg,
       a.Promo_NSV/a.Promo_kg AS Promo_NSVkg
FROM Actuals AS a
        LEFT JOIN PriceList AS b ON a.SKU=b.SKU AND a.EssbaseCustomer=b.EssbaseCustomer
        LEFT JOIN Map_SKU AS c ON a.SKU=c.SKU
        LEFT JOIN Seasonality AS d ON a.Weekno=d.Weekno AND d.brand=c.Brand
WHERE a.Promo_Kg>0;

Надеюсь, это поможет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...