Ошибка «Нет текущей записи» при объединении с логическим полем в MS-ACCESS

#sql #ms-access #ms-access-2010

#sql #ms-access #ms-access-2010

Вопрос:

Этот запрос возвращает ошибку «Нет текущей записи». [use_Override1] имеет логическое значение. Вместо этого, если я определяю [use_Override1] как строку со значениями «TRUE» или «FALSE», это работает. Может кто-нибудь объяснить мне, почему?

 SELECT  '*' AS Sector, tbl.blkName AS Sector2, Sub2.use_Override1
FROM( (dbSecurityAllocation AS tbl 
LEFT JOIN 
(SELECT * FROM dbHoldings WHERE dbHoldings.Code_BB='SQECR' AND DataDiEstrazione='30/11/2020') AS Sub1 
ON tbl.isin=Sub1.isin) 
LEFT JOIN  
(SELECT * FROM dbAggregateAlloc WHERE Code_BB='SQECR' AND fldName='FUND_ASSET_ALLOC_CALC')  AS Sub2 
ON Sub2.blkName=tbl.blkName)
GROUP BY  tbl.blkName,Sub2.use_Override1
 

Комментарии:

1. Не помечайте спам. Если вы используете Microsoft Access, отметьте это и только это, а не случайные другие несвязанные продукты. MySQL даже не производится той же компанией, что и Access и SQL Server.

2. Почему у вас есть звездочка внутри апострофов с именем псевдонима? Это просто возвращает поле с именем Sector с символом звездочки. Является ли DataDiEstrazione полем даты / времени или текстовым полем? Вы пытаетесь сгруппировать use_Override1 в качестве поля «да / нет», и это не удается, но в качестве текстового поля это работает? Я протестировал это и не имею проблем с полем да / нет в GROUP BY. Затем я протестировал ваш синтаксис с псевдонимами, и это тоже работает. Поскольку у вас нет каких-либо агрегированных вычислений, возможно, следует использовать DISTINCT вместо GROUP BY. Никакие поля из Sub1 не извлекаются во внешний запрос, так зачем его включать? Отредактируйте q, чтобы отобразить данные и желаемый результат.

3. Мне нужен столбец звездочек в качестве выходных данных. DataDiEstrazione — это текстовое поле. Идея состоит в том, чтобы иметь столбец aggregate calcs, но сначала я пытался найти причину ошибки

4. 7 июня ошибка заключалась в том, что tbl.blkName имеет значение, которого нет в Sub2.blkName (n / c для не классифицировано). Я обнаружил после того, как вы сказали, что протестировали запрос без проблем. Все еще не могу понять, почему он работает со строковыми полями, а не с логическим значением.