2013-08-20 5 views
1

Может ли кто-нибудь указать мне ошибку в этом заявлении sql?LEFT JOIN (SELECT) Ошибка синтаксиса From From

SELECT CommTypes.Description, Intro.[Percent] 
FROM CommTypes 
LEFT JOIN 
(
    SELECT * 
    FROM IntroducerBasis 
    WHERE IntroducerBasis.IntroducerCode='AG' 
     AND IntroducerBasis.BasisNumber=1 
) AS Intro 
ON CommTypes.ID = Intro.CommTypeID; 

Ошибка подсвечивает последующую инструкцию SELECT в качестве источника ошибки.

Ошибка является «Ошибка синтаксиса в предложении FROM»

+0

Какая ошибка? – ataravati

+0

Какое сообщение об ошибке? –

+0

Ошибка синтаксиса From From – robprestwood

ответ

2

Ну, так как вы только возвращает значение из родительской таблицы, зачем вам нужен подзапрос вообще?

Однако, попробуйте указать столбцы, а не * в подзапросе:

SELECT CommTypes.Description 
FROM CommTypes 
LEFT JOIN (
    SELECT 
    field1, 
    field2 
    FROM IntroducerBasis 
    WHERE IntroducerCode='AG' AND BasisNumber=1) AS Intro 
ON CommTypes.ID = Intro.CommTypeID; 
+0

Это не влияет на результаты. Intro.Percent также должен быть частью первоначального выбора, я внесла поправки в оригинал, чтобы отразить это. – robprestwood

+0

@robprestwood Что такое сообщение об ошибке? –

+0

@D Синтаксис Синтаксиса Стэнли В разделе «От» выражается 2-й оператор SELECT – robprestwood

0

Я не уверен, что тип соединения с оператором выбора допускается в MS-ACCESS. Попробуйте вместо этого:

SELECT CommTypes.Description, IntroducerBasis.Percent 
FROM CommTypes 
LEFT JOIN IntroducerBasis 
    ON CommTypes.ID = IntroducerBasis.CommTypeID 
    AND IntroducerBasis.IntroducerCode='AG' 
    AND IntroducerBasis.BasisNumber=1; 
+3

Это отрицает левое соединение, но дает значения для CommTypes.ID, где существует соответствующий идентификатор EntercerBasis.CommTypeID. – robprestwood

+0

Правильно, извините. Он должен быть включен в соединение. Я отредактировал как таковой. – McSenstrum

0
SELECT CommTypes.[Description], Intro.[Percent] 
FROM CommTypes 
LEFT JOIN 
(
    SELECT * 
    FROM IntroducerBasis 
    WHERE IntroducerBasis.IntroducerCode='AG' 
     AND IntroducerBasis.BasisNumber=1 
) AS Intro 
ON CommTypes.ID = Intro.CommTypeID 

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

+1

Это не проблема, обновленный op, чтобы предотвратить дальнейшую путаницу – robprestwood

+0

@robprestwood Возможно, вы захотите обернуть Описание также – JsonStatham

0

Это, по-видимому, ограничение доступа, так как создает дополнительный запрос в доступе и присоединении к нему, который отлично работает.

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