!!!菜鸟视图问题 急!!!!

haibuo1981 2005-04-20 09:50:32
通过a b c 三个表建立视图,a为主,通过a.goodsID=b.cInvCode在b表中查询(这个视图我已经建好,如下),通过LEFT(a.goodsID,2)=c.cInvCCode WHERE LEN(c.cInvCCode)=2(也就是a.goodsID的前两位与长度为2的c.cInvCode相等)查询出每个a.ggodsID对应的c.cInvCName;

已建立的视图主体如下(a、b)
SELECT SUM(b.iQuantity) + SUM(b.fInQuantity)
- SUM(b.fOutQuantity) AS iQuantity, a.goodsID,a.others
FROM dbo.SM_orders a LEFT OUTER JOIN
dbo.CurrentStock b ON a.goodsID = b.cInvCode AND b.iQuantity > 0
GROUP BY a.goodsID,a.others

该如何实现?
...全文
112 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
haibuo1981 2005-04-20
  • 打赏
  • 举报
回复
可以选择,不过有错误,太晚了,我要回宿舍了,多谢你的帮忙;
非常希望明天能继续请教你。
paoluo 2005-04-20
  • 打赏
  • 举报
回复
试试,将c的表名替换掉。

SELECT
SUM(b.iQuantity) + SUM(b.fInQuantity) - SUM(b.fOutQuantity) AS iQuantity,
a.goodsID,
a.others,
c.cInvCName
FROM dbo.SM_orders a
LEFT OUTER JOIN dbo.CurrentStock b ON a.goodsID = b.cInvCode AND b.iQuantity > 0
LEFT JOIN c的表名 c On LEFT(a.goodsID,2)=c.cInvCCode
Where LEN(c.cInvCCode)=2
GROUP BY a.goodsID,a.others
haibuo1981 2005-04-20
  • 打赏
  • 举报
回复
主要问题是:三个表Join的时候,我不会写FROM
汗.......
paoluo 2005-04-20
  • 打赏
  • 举报
回复
类似的道理啊。这个可以加,你那个应该也没有问题啊。
haibuo1981 2005-04-20
  • 打赏
  • 举报
回复
嗯 对 就是这样,但是把他加入到我建好的视图(a、b)的里面该如何加,多谢!
paoluo 2005-04-20
  • 打赏
  • 举报
回复
就你这天的例子改的,看看是不是你要的。


--建立测试环境
Create table a
(cInvCode Varchar(10)
)

Create table b
(Code Varchar(5),
Name Varchar(10))
GO
--插入数据
Insert a Values('AA0001')
Insert a Values('AA0002')
Insert a Values('AA0003')
Insert a Values('BB0001')
Insert a Values('BB0002')
Insert a Values('CC0002')

Insert b Values('AA','KKD')
Insert b Values('BB','JHG')
Insert b Values('CC','DFR')
Insert b Values('CCC','SDE')
GO
Create View [list]
AS
Select B.*,A.* from B Left Join A On B.Code=Left(A.cInvCode,2) Where Len(Code)=2
GO
--测试
Select * from list
--删除测试环境
Drop table a,b
Drop View list
--结果
/*
Code cInvCode Name
AA KKD AA0001
AA KKD AA0002
AA KKD AA0003
BB JHG BB0001
BB JHG BB0002
CC DFR CC0002
*/

haibuo1981 2005-04-20
  • 打赏
  • 举报
回复

但是我要读取c.cInvCName啊,该怎么读取这个才是最重要的
paoluo 2005-04-20
  • 打赏
  • 举报
回复
试试


SELECT SUM(b.iQuantity) + SUM(b.fInQuantity)
- SUM(b.fOutQuantity) AS iQuantity, a.goodsID,a.others
FROM dbo.SM_orders a LEFT OUTER JOIN
dbo.CurrentStock b ON LEFT(a.goodsID,2)=b.cInvCCode AND b.iQuantity > 0
Where LEN(b.cInvCCode)=2
GROUP BY a.goodsID,a.others
haibuo1981 2005-04-20
  • 打赏
  • 举报
回复
ps:c.cInvCCode长度>=2,需要先选择

34,873

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧