У меня есть структура для работы с данными из загруженного. NET Набор данных из одного запроса. У меня есть таблица, предназначенная для переопределения значений по умолчанию для моего приложения. Чтобы продемонстрировать построение таблицы переопределения параметров:
CREATE TABLE TABLE1(
PK int IDENTITY(1,1) NOT NULL,
VALINT int NOT NULL,
DESCRIPTION1 varchar(50) NOT NULL
)
Мой код сгенерирует SQL со встроенными значениями по умолчанию, UNION, с данными пользовательских переопределений из таблицы, в запрос и вернет один набор данных:
SELECT C.VALINT, C.DESCRIPTION1
FROM (
SELECT MAX(PK)AS PK, VALINT
FROM (
SELECT PK, VALINT
FROM TABLE1
UNION
SELECT 0, 1
UNION
SELECT 0, 2
) A
GROUP BY VALINT
)B, (
SELECT PK, VALINT, DESCRIPTION1
FROM TABLE1
UNION
SELECT 0, 1, 'Default1Val'
UNION
SELECT 0, 2, 'Default2Val'
) C
WHERE B.PK = C.PK AND B.VALINT = C.VALINT
Запустите этот запрос для пустой таблицы, и вы увидите только две настройки по умолчанию, определенные в запросе. Затем можно добавить новое пользовательское переопределение:
INSERT INTO TABLE1(VALINT,DESCRIPTION1)VALUES(1,'CustomOverride1')
Теперь повторите этот запрос, и вы увидите одно пользовательское значение из таблицы и одно оставшееся не переопределенное значение по умолчанию. Этот запрос делает именно то, что мне нужно, однако, когда выполняется таким образом, данные из таблицы объединяются с данными настроек по умолчанию два раза. Возможен ли более элегантный запрос с одним набором UNION или я застрял с двумя полными наборами UNION, как показано выше?