Ошибка синтаксиса SQL в операции соединения с подзапросом в предложении FROM - PullRequest
0 голосов
/ 25 октября 2018

Я бился головой об этом, и я уверен, что это очень простой ответ.в Excel 2016 VBA у меня есть приведенная ниже строка SQL, но я получаю синтаксическую ошибку при операции соединения.

SELECT c.code, p.description, p.weight, p.[pack size], p.ppb, p.[CP-UK], p.[CP-EU]
FROM((
    SELECT *
        FROM [Catalogue Info] as c
        LEFT JOIN [Product Information] as p on c.code = p.code
    )
    LEFT JOIN [;database=C:\mypath\db.accdb;PWD=1234].tbl as pl on c.code = pl.product_code
    )
WHERE c.Category = 'VIENNOISERIE'
AND c.Sub_Cat_1 = 'CROISSANTS'
AND c.Sub_Cat_2 = ''
AND p.active = true
ORDER BY c.Page ASC, c.Page_Position ASC;

Я пытался использовать второй LEFT JOIN внутри подзапроса, но яизо всех сил пытается сослаться на это в предложении SELECT.

Есть мысли?

Ответы [ 3 ]

0 голосов
/ 25 октября 2018

Предполагая, что вы запрашиваете внешнюю базу данных с правильным синтаксисом

    SELECT c.code, p.description, p.weight, p.[pack size], p.ppb, p.[CP-UK], p.[CP-EU]
        FROM [Catalogue Info] as c
        LEFT JOIN [Product Information] as p on c.code = p.code
    LEFT JOIN [;database=C:\mypath\db.accdb;PWD=1234].tbl as pl on c.code = pl.product_code
WHERE c.Category = 'VIENNOISERIE'
AND c.Sub_Cat_1 = 'CROISSANTS'
AND c.Sub_Cat_2 = ''
AND p.active = true
ORDER BY c.Page ASC, c.Page_Position ASC;

Кроме того, почему вы включаете внешний БД (.tbl as pl), когда вы не используете его в операторе SELECT?

0 голосов
/ 25 октября 2018

Используйте ниже код

SELECT c.code, p.description, p.weight, p.[pack size], p.ppb, p.[CP-UK], p.[CP-EU]
FROM((
    SELECT *
        FROM [Catalogue Info] as c
        LEFT JOIN [Product Information] as p on c.code = p.code
    ) as t
    LEFT JOIN [;database=C:\mypath\db.accdb;PWD=1234].tbl as pl on t.code = pl.product_code
    ) as t1
WHERE t1.Category = 'VIENNOISERIE'
AND t1.Sub_Cat_1 = 'CROISSANTS'
AND t1.Sub_Cat_2 = ''
AND pactive = true
ORDER BY Page ASC, Page_Position ASC;
0 голосов
/ 25 октября 2018

Думаю, это будет

SELECT j.code, j.description, j.weight, j.[pack size], j.ppb, j.[CP-UK], j.[CP-EU]
FROM(
    SELECT c.code, p.description, p.weight, p.[pack size], p.ppb, p.[CP-UK], p.[CP-EU],
c.Category,c.Sub_Cat_1,c.Sub_Cat_2,p.active,c.Page,c.Page_Position
        FROM [Catalogue Info] as c
        LEFT JOIN [Product Information] as p on c.code = p.code
    )j
    LEFT JOIN [;database=C:\mypath\db.accdb;PWD=1234].tbl as pl on j.code = pl.product_code

WHERE j.Category = 'VIENNOISERIE'
AND j.Sub_Cat_1 = 'CROISSANTS'
AND j.Sub_Cat_2 = ''
AND j.active = true
ORDER BY j.Page ASC, j.Page_Position ASC;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...