Access数据库
有商品表A,仓库表B,库存表,C。商品表:
商品ID
商品名称仓库表:
仓库ID
仓库名称库存表:
商品ID
仓库ID
库存数量想查询所有商品某一仓库的库存数量,如果库存表中没有某个商品的库存数量记录,就显示库存数量为零。
谢谢
有商品表A,仓库表B,库存表,C。商品表:
商品ID
商品名称仓库表:
仓库ID
仓库名称库存表:
商品ID
仓库ID
库存数量想查询所有商品某一仓库的库存数量,如果库存表中没有某个商品的库存数量记录,就显示库存数量为零。
谢谢
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
Access使用的是Jet-SQL,SQL Server使用的是T-SQL,两者用法上相差很大。
JET SQL 帮助(jet4 access2000)下载地址http://www.access911.net/index.asp?board=8&recordid=75FAB71E&tt=
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
left join
(
select 商品ID, 仓库ID, 库存数量=sum(库存数量)
from C
group by 商品ID, 仓库ID
)C on A.商品ID=C.商品ID
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;
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。
学到了,楼上原来就是那个access版的老大
以前用vb+access写过一个系统,有过的你回帖的帮助呢。
在此感谢一下
FROM 商品表 AS A LEFT JOIN (select * from 库存表 where 仓库ID=1) AS B ON A.商品ID=B.商品ID
CSDN的SQL版是回帖最快的板块,我结贴可不能慢了。