以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教SQL语句  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=100657)

--  作者:ap9709130
--  发布时间:2017/5/15 23:41:00
--  请教SQL语句
有个SQL语句,不知道怎么写。订单明细表中 有个MID列,也有个CID列,另外一个编码表中也有个MID列和CID列,还有个产品编码的列。现在想如果编码表中存在当前MID和CID中的产品编码,就显示出来

se lec t (s e lect [产品编码] from {编码表} where MID = {订单明细}.MID and CID = {订单明细}.CID  ) as 编码 from {订单明细} where 条件

会报错。要怎么写? 

--  作者:有点蓝
--  发布时间:2017/5/16 8:19:00
--  
Select b.[产品编码] from {编码表} As a Inner join {订单明细} As b on a.[MID] = b.[MID] And a.[CID] = b.[CID] where 条件


--  作者:ap9709130
--  发布时间:2017/5/16 13:43:00
--  
如果编码表中存在两行都是达到条件的,我只想要_Identify 最大的那一行,要怎么写?
--  作者:有点色
--  发布时间:2017/5/16 14:07:00
--  

 sql语句你最后只需要得到一行数据?你的逻辑是不是有问题?

 

 Select top 1 b.[产品编码] from {编码表} As a Inner join {订单明细} As b on a.[MID] = b.[MID] And a.[CID] = b.[CID] where 条件 order by [_Identify] desc

[此贴子已经被作者于2017/5/16 14:37:50编辑过]

--  作者:ap9709130
--  发布时间:2017/5/16 14:21:00
--  
老师

因为编码是会换的,我只想要最新的编码!

--  作者:有点色
--  发布时间:2017/5/16 14:38:00
--  
 那就用4楼的方法,加上排序,加上获取行数。
--  作者:ap9709130
--  发布时间:2017/5/19 14:37:00
--  
我的SQL语句如下:

IIF({销售订单明细}.物料编码 is null,(se l e ct [物料编码] from {WLBM} where MID = {销售订单明细}.MID and CID = {销售订单明细}.CID),{WLBM}.物料编码) as 物料编码

当编码表中只 MID = {销售订单明细}.MID and CID = {销售订单明细}.CID 只有一行时,上面的语句是不会出错了,但是当有两行时,就会出错。如果能选中_Identify 最大的一行?

--  作者:ap9709130
--  发布时间:2017/5/19 15:00:00
--  
解决了,用 TOP 1 加上 order by 就可以了!