以文本方式查看主题

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

--  作者:baoxyang
--  发布时间:2014/6/25 13:53:00
--  求教SQL语句

表A,   列a1,a2,a3

表B,   列b1,b2

希望selec a.*,b.b2  from 表A a left join 表B b on a.a1 = b.b1

但b2只希望是最后一条记录

这个SQL语句如何写,谢谢!


--  作者:Bin
--  发布时间:2014/6/25 14:03:00
--  
不是很明白你的意思.
--  作者:baoxyang
--  发布时间:2014/6/25 14:07:00
--  
有两表,表A及表B,关联列相同值,表B会存在多列,只需要显示表B最后一列内容.这样查询语句如何写
[此贴子已经被作者于2014-6-25 14:07:47编辑过]

--  作者:有点甜
--  发布时间:2014/6/25 14:09:00
--  
select c.*, (select top 1 d.b2 from {表B} d where d.b1 = c.a1) from (selec a.*, b.* from 表A a left join 表B b on a.a1 = b.b1) c
--  作者:baoxyang
--  发布时间:2014/6/25 14:11:00
--  

select a.托运单号,a.商场编号,a.客户简称,a.目的城市,a.条码单号,IsNull(d.预约内容,a.备注) as 预约内容 from 托运单据 a left join (Select c.* from (Select max(ID) As id,托运单号 from 托运预约 group by 托运单号) b left join 托运预约 c on b.id = c.id and b.托运单号 = c.托运单号) As d on a.托运单号 =d.托运单号 ,条码单据 as p where a.条码单号 = p.条码单号 and p.状态 <> \'初始\' and a.单据状态 = \'开单入库\' and a.销单否 = \'否\'  and a.标记 = 0 and (a.预约状态 = \'已预约\' or a.预约状态 = \'不需要\')

这个语句是三表关联,能优化吗?查询速度太慢了.


--  作者:baoxyang
--  发布时间:2014/6/25 14:20:00
--  
我要的结果是:首先是托运单据表与条码单据表,相关联列为条码单号,满足条件是条码单据表不等于\'初始\',而且托运单据表中需要满足条件a.单据状态 = \'开单入库\' and a.销单否 = \'否\'  and a.标记 = 0 and (a.预约状态 = \'已预约\' or a.预约状态 = \'不需要\'),得到所有托运单据表数据.再需要满足托运预约表相关联列为托运单号,只显示为满足条件最后一条记录的d.预约内容,上面SQL语句可以满足我要的数据,但查询慢度有问题.可能是语句有问题.请帮修改下!先谢了!!
--  作者:jspta
--  发布时间:2014/6/25 15:18:00
--  

select a.托运单号,a.商场编号,a.客户简称,a.目的城市,a.条码单号,IsNull(d.预约内容,a.备注) as 预约内容 from (Select * from  托运单据  

where 单据状态 = \'开单入库\' and 销单否 = \'否\'  and 标记 = 0 and (预约状态 = \'已预约\' or 预约状态 = \'不需要\')) as a

left join (Select c.* from (Select max(ID) As id,托运单号 from 托运预约 group by 托运单号) b left join 托运预约 c on b.id = c.id and b.托运单号 = c.托运单号) As d on a.托运单号 =d.托运单号 ,条码单据 as p where a.条码单号 = p.条码单号 and p.状态 <> \'初始\' 


具体你在看看,应该已经提升很多了




--  作者:baoxyang
--  发布时间:2014/6/25 15:49:00
--  

谢了,试试看