У меня есть одна таблица с информацией об оборудовании, а затем еще две связанные таблицы 2 связанные таблицы баз данных с изображениями, одна из них заполнена, следовательно, новая с новыми изображениями, которые нельзя было поместить в первую. Связь между изображениями и оборудованием осуществляется двумя полями: MARCA (марка) и MODELO (модель). Поэтому мне приходится искать, в какой таблице находится изображение оборудования. Нулевая проверка проверяет, если я смотрю на один, я не получаю изображение, а затем смотрю на другой. Я мог бы сделать это нормально только с одним таким:
SELECT [Tabela Equipamentos ULSM Geral].*, [Fotografias e Manuais de Equipamentos2].FOTO
FROM [Tabela Equipamentos ULSM Geral] LEFT JOIN [Fotografias e Manuais de Equipamentos2] ON ([Tabela Equipamentos ULSM Geral].MODELO = [Fotografias e Manuais de Equipamentos2].MODELO) AND ([Tabela Equipamentos ULSM Geral].Marca_ = [Fotografias e Manuais de Equipamentos2].MARCA);
Но с новым нужно добавить его, поэтому я использую случай, но он дает мне синтаксическую ошибку:
SELECT [Tabela Equipamentos ULSM Geral].*, CASE
WHEN [Fotografias e Manuais de Equipamentos1].FOTO IS NULL THEN [Fotografias e Manuais de Equipamentos2].FOTO
ELSE [Fotografias e Manuais de Equipamentos1].FOTO
END AS FOTO
FROM [Fotografias e Manuais de Equipamentos2], [Fotografias e Manuais de Equipamentos1] INNER JOIN ([Tabela Equipamentos ULSM Geral] INNER JOIN [Fotografias e Manuais de Equipamentos2] AS [Fotografias e Manuais de Equipamentos2_1] ON ([Tabela Equipamentos ULSM Geral].MODELO = [Fotografias e Manuais de Equipamentos2_1].MODELO) AND ([Tabela Equipamentos ULSM Geral].Marca_ = [Fotografias e Manuais de Equipamentos2_1].MARCA)) ON ([Fotografias e Manuais de Equipamentos1].MODELO = [Tabela Equipamentos ULSM Geral].MODELO) AND ([Fotografias e Manuais de Equipamentos1].MARCA = [Tabela Equipamentos ULSM Geral].Marca_);
Так что я делаю не так в CASE?
РЕДАКТИРОВАТЬ: изменено на Iif, которое стало таким:
SELECT [Tabela Equipamentos ULSM Geral].*,
IIf([Fotografias e Manuais de Equipamentos2].FOTO IS NULL,[Fotografias e Manuais de Equipamentos1].FOTO, [Fotografias e Manuais de Equipamentos2].FOTO )
FROM [Fotografias e Manuais de Equipamentos2], [Fotografias e Manuais de Equipamentos1] INNER JOIN ([Tabela Equipamentos ULSM Geral] INNER JOIN [Fotografias e Manuais de Equipamentos2] AS [Fotografias e Manuais de Equipamentos2_1] ON ([Tabela Equipamentos ULSM Geral].MODELO = [Fotografias e Manuais de Equipamentos2_1].MODELO) AND ([Tabela Equipamentos ULSM Geral].Marca_ = [Fotografias e Manuais de Equipamentos2_1].MARCA)) ON ([Fotografias e Manuais de Equipamentos1].MODELO = [Tabela Equipamentos ULSM Geral].MODELO) AND ([Fotografias e Manuais de Equipamentos1].MARCA = [Tabela Equipamentos ULSM Geral].Marca_);
Если это поможет, вот изображение структуры
Теперь ошибки нет, но результат запроса пуст.
CASE
. Вместо этого вы можете использовать нижнийIif()
. - person gvee   schedule 19.11.2013Nz
(функция доступа, похожая наISNULL
SQL Server или стандартнуюCOALESCE
), которая вернет свой первый аргумент, если только он не равен нулю, и в этом случае она возвращает свой второй аргумент. - person Damien_The_Unbeliever   schedule 19.11.2013NULL
, в своем редактировании (оригинал проверял 1,Iif
проверял 2) - person Damien_The_Unbeliever   schedule 19.11.2013System.Drawing.Image
. Я только что попробовал это на одном из тестовых файлов, которые вы мне дали некоторое время назад: до преобразования файл .mdb (содержащий один файл JPEG с OLE-оболочкой) составлял 16,8 МБ. После конвертации, но до сжатия файл .mdb был 21,9 МБ. После сжатия и восстановления файл .mdb (теперь содержащий одно необработанное изображение PNG) составлял 5,3 МБ. - person Gord Thompson   schedule 20.11.2013