2010-12-09 4 views
1

Я три таблицы в этом режиме:Запрос на 3 таблицы

Time1 с колонкой "Данные" в формате гг/мм/AAAA

Руководство с колоннами "Valman" и «dataora «тот же формат.

Автоматический с колонками "valAuto" и "dataora" в том же формате.

Я должен найти значения «valAuto» из таблицы Automatic где Data.Time1 является = dataora.Automatic и если значение равно нулю, я беру это значение из valMan.Manual в том же Data.Time1 = dataora.Manual

В доступе к sql или vb для доступа.

Очень важно для меня ... Большое вам спасибо!

+0

К сожалению. У меня есть еще одна небольшая проблема, в colums of Automatic.dataora, у меня есть 4 значения: es. 01/01/2010, 01/01/2010 04:00:00, 01/01/2010 08:00:00, 01/01/2010 12:00:00. Мне нужно последнее: 01/01/2010 12:00:00. Но в Time1.Data у меня только 01.01.2010 без часов. Как я могу сделать? – malvin 2010-12-09 10:44:38

ответ

1

Для MS Access можно попробовать Iif и IsNull

SELECT Time1.Data, 
     IIf(IsNull([valAuto]),[valMan],[valAuto]) AS Expr1 
FROM (Time1 LEFT JOIN Automatic ON Time1.Data = Automatic.dataora) LEFT JOIN 
     Manual ON Time1.Data = Manual.dataora; 

или

Nz

SELECT Time1.Data, 
     Nz([valAuto],[valMan]) AS Expr1 
FROM (Time1 LEFT JOIN Automatic ON Time1.Data = Automatic.dataora) LEFT JOIN 
     Manual ON Time1.Data = Manual.dataora; 
0

Не знаю, о доступе, но это должно сделать это в MS SQL Server

SELECT 
ISNULL(a.valAuto, m.valMan) AS whatIWant 
FROM 
Automatic a 
INNER JOIN Time1 t ON a.dataora = t.Data 
INNER JOIN Manual m ON t.Data = m.dataora 

Команда ISNULL заменяет valAuto с Valman если valAuto равна нулю.

+0

Спасибо за ваш ответ. – malvin 2010-12-09 09:57:48

+0

IsNull() означает что-то совершенно другое в Access/Jet/ACE, поэтому это не сработает. – 2010-12-10 03:55:48

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