Нет способа сделать это за один запрос: вы не можете выполнить запрос, который включает столбцы, которых нет в исходных таблицах.Когда сервер пытается скомпилировать запрос, он просто потерпит неудачу.
Если вам абсолютно необходимо поддерживать разные сценарии, вам понадобятся разные запросы для каждого из них.
Чтобы сделать вещи еще болееофигенно, не существует документированного способа проверить, есть ли в таблице Access определенный столбец с помощью SQL.В SQL Server вы можете запрашивать системную схему, например, sys.objects или sys.columns.В Access таблица MsysObjects содержит необходимую информацию, но ее схема может измениться без вашего уведомления.
Вероятно, самый безопасный способ сделать это - выполнить одну предварительную проверку, при которой вы выполняетекоманда, такая как
SELECT * FROM Table1
, затем просканирует имена результирующих столбцов, чтобы увидеть, существует ли необязательный столбец;тогда ваш код C # станет:
string sqlQuery = string.Empty;
if (optionalColumnExists)
{
sqlQuery = "SELECT [Table1].[Index], [Table1].[Optional Info], -- etc."
}
else
{
sqlQuery = "SELECT [Table1].[Index], '' AS [Optional Info], -- etc."
}