Access数据库
有商品表A,仓库表B,库存表,C。商品表:
商品ID
商品名称仓库表:
仓库ID
仓库名称库存表:
商品ID
仓库ID
库存数量想查询所有商品某一仓库的库存数量,如果库存表中没有某个商品的库存数量记录,就显示库存数量为零。
谢谢

解决方案 »

  1.   

    --Access中用nz()函数。SELECT 
          1 as 仓库ID,
          (select top 1 仓库名称 from 仓库表 where 仓库ID=1) as 仓库名称, 
          A.商品ID, 
          A.商品名称, 
          nz(B.库存数量,0) as 库存数量
    FROM 商品表 AS A LEFT JOIN 库存表 AS B ON A.商品ID = B.商品ID
    WHERE B.仓库ID=1
      

  2.   


    Access使用的是Jet-SQL,SQL Server使用的是T-SQL,两者用法上相差很大。
    JET SQL 帮助(jet4 access2000)下载地址http://www.access911.net/index.asp?board=8&recordid=75FAB71E&tt=
      

  3.   

    如果在纯Access中可以使用以下两种方式:SELECT 
          1 AS 仓库ID, 
          (select top 1 仓库名称 from 仓库表 where 仓库ID=1) AS 仓库名称, 
          A.商品ID, 
          A.商品名称, 
          iif(isnull(B.库存数量),0,B.库存数量) as 库存数量
    FROM 商品表 AS A LEFT JOIN 库存表 AS B ON A.商品ID=B.商品ID
    WHERE B.仓库ID=1;
    --或
    SELECT 
          1 as 仓库ID,
          (select top 1 仓库名称 from 仓库表 where 仓库ID=1) as 仓库名称, 
          A.商品ID, 
          A.商品名称, 
          nz(B.库存数量,0) as 库存数量
    FROM 商品表 AS A LEFT JOIN 库存表 AS B ON A.商品ID = B.商品ID
    WHERE B.仓库ID=1
      

  4.   

    --SQL 2000select A.*, 库存数量=isnull(C.库存数量, 0) from A
    left join
    (
    select 商品ID, 仓库ID, 库存数量=sum(库存数量)
    from C
    group by 商品ID, 仓库ID
    )C on A.商品ID=C.商品ID
      

  5.   

    如果在ADO中访问MDB数据库,用iif()方式,即:SELECT 
          1 AS 仓库ID, 
          (select top 1 仓库名称 from 仓库表 where 仓库ID=1) AS 仓库名称, 
          A.商品ID, 
          A.商品名称, 
          iif(isnull(B.库存数量),0,B.库存数量) as 库存数量
    FROM 商品表 AS A LEFT JOIN 库存表 AS B ON A.商品ID=B.商品ID
    WHERE B.仓库ID=1;
      

  6.   

    Access中的isnull()函数与SQL Server的isnull()函数意义不同。Access中isnull()函数如下:
    IsNull 函数
          返回 Boolean 值,指出表达式是否不包含任何有效数据 (Null)。语法IsNull(expression)必要的 expression 参数是一个 Variant,其中包含数值表达式或字符串表达式。说明如果 expression 为 Null,则 IsNull 返回 True;否则 IsNull 返回 False。如果 expression 由多个变量组成,则表达式的任何作为变量组成成分的 Null 都会使整个表达式返回 True。Null 值指出 Variant 不包含有效数据。Null 与 Empty 不同,后者指出变量尚未初始化。Null 与长度为零的字符串 (““) 也不同,长度为零的字符串指的是空串。重要 使用 IsNull 函数是为了确定表达式是否包含 Null 值的。在某些情况下,希望表达式取值为 True,比如希望 If Var = Null 和 If Var <> Null 取值为 True,而它们总取值为 False。这是因为任何包含 Null 的表达式本身就是 Null,所以为 False。IsNull 函数示例
    本示例使用 IsNull 函数检查变量值是否为 Null。Dim MyVar, MyCheck
    MyCheck = IsNull(MyVar)    ' 返回 False。MyVar = ""
    MyCheck = IsNull(MyVar)    ' 返回 False。MyVar = Null
    MyCheck = IsNull(MyVar)    ' 返回 True。
      

  7.   

    哦,access有个nz相当月sqlserver的isnull
    学到了,楼上原来就是那个access版的老大
    以前用vb+access写过一个系统,有过的你回帖的帮助呢。
    在此感谢一下
      

  8.   

    --改一下:SELECT 1 AS 仓库ID, (select top 1 仓库名称 from 仓库表 where 仓库ID=1) AS 仓库名称, A.商品ID, A.商品名称, iif(isnull(B.库存数量),0,B.库存数量) AS 库存数量
    FROM 商品表 AS A LEFT JOIN (select * from 库存表 where 仓库ID=1) AS B ON A.商品ID=B.商品ID
      

  9.   

    好了,通过了,非常感谢。
    CSDN的SQL版是回帖最快的板块,我结贴可不能慢了。