查询3个表

时间:2010-12-09 09:16:08

标签: sql ms-access

我在这种模式下有三张桌子:

时间1 ,列“数据”格式为gg / mm / aaaa

手动,列“valMan”和“dataora”格式相同。

自动,列“valAuto”和“dataora”格式相同。

我必须从表Automatic中找到值“valAuto”,其中Data.Time1是= dataora.Automatic,如果值为null,我从valMan.Manual获取此值,在同一Data.Time1 = dataora.Manual

访问sql或vb以进行访问。

对我来说非常重要...非常感谢!!!

2 个答案:

答案 0 :(得分:1)

对于MS Access,您可以尝试IifIsNull

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;

答案 1 :(得分: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

如果valAuto为null,则ISNULL命令用valMan替换valAuto。