关联表内只显示一行值
时间:2011-12-18
来源:互联网
我统计货邮量 比如有两个表 a( flt,ori,des, pcs,wgt) b(flt,mail_pcs,mail_wgt)
a表中有两行数据是
-----------------------
cz0331 pek los 10 100
cz0331 pek dxb 20 200
-----------------------
b 表中有一行数据是
------------------
CZ0331 30 300
---------------
我想要结果
flt ori des pcs wgt mail_pcs mail_wgt
-----------------------------------
cz0331 pek los 10 100 30 300
cz0331 pek dxb 20 200 0 0
----------------------------------------
邮件在这个航班上只显示在一行, 怎么处理
两个表的连接关键字是flt,如果直接关联用语句select a.*, b.mail_pcs, b.mail_wgt from a, b where a.flt=b.flt的话
会显示
flt ori des pcs wgt mail_pcs mail_wgt
-----------------------------------
cz0331 pek los 10 100 30 300
cz0331 pek dxb 20 200 30 300
----------------------------------------
而我想要的结果是
-----------------------------------
cz0331 pek los 10 100 30 300
cz0331 pek dxb 20 200 0 0
----------------------------------------
a表中有两行数据是
-----------------------
cz0331 pek los 10 100
cz0331 pek dxb 20 200
-----------------------
b 表中有一行数据是
------------------
CZ0331 30 300
---------------
我想要结果
flt ori des pcs wgt mail_pcs mail_wgt
-----------------------------------
cz0331 pek los 10 100 30 300
cz0331 pek dxb 20 200 0 0
----------------------------------------
邮件在这个航班上只显示在一行, 怎么处理
两个表的连接关键字是flt,如果直接关联用语句select a.*, b.mail_pcs, b.mail_wgt from a, b where a.flt=b.flt的话
会显示
flt ori des pcs wgt mail_pcs mail_wgt
-----------------------------------
cz0331 pek los 10 100 30 300
cz0331 pek dxb 20 200 30 300
----------------------------------------
而我想要的结果是
-----------------------------------
cz0331 pek los 10 100 30 300
cz0331 pek dxb 20 200 0 0
----------------------------------------
作者: jeetliang 发布时间: 2011-12-18
SQL code
elect a.*, b.mail_pcs, b.mail_wgt from b left join a on a.flt=b.flt
作者: fredrickhu 发布时间: 2011-12-18
SQL code
select a.*, b.mail_pcs, b.mail_wgt from b left join a on a.flt=b.flt
作者: fredrickhu 发布时间: 2011-12-18
SQL code
select a.*, isnull(b.mail_pcs,0), insull(b.mail_wgt,0) from b left join a on a.flt=b.flt
作者: fredrickhu 发布时间: 2011-12-18
SQL code
if object_id('a') is not null drop table a go create table a ( flt varchar(10), ori varchar(10), des varchar(10), pcs int, wgt int ) go insert into a select 'cz0331','pek','los',10,100 union all select 'cz0331','pek','dxb',20,200 go if object_id('b') is not null drop table b go create table b ( flt varchar(10), mail_pcs int, mail_wgt int ) go insert into b select 'cz0331',30,300 go select t1.flt,ori,des,pcs,wgt,mail_pcs=isnull(mail_pcs,0),mail_wgt=isnull(mail_wgt,0) from (select * ,row=row_number() over(partition by flt order by getdate()) from a)t1 left join (select *,row=row_number() over(partition by flt order by getdate()) from b) t2 on t1.flt=t2.flt and t1.row=t2.row go /* flt ori des pcs wgt mail_pcs mail_wgt ---------- ---------- ---------- ----------- ----------- ----------- ----------- cz0331 pek los 10 100 30 300 cz0331 pek dxb 20 200 0 0 (2 行受影响) */
作者: pengxuan 发布时间: 2011-12-18
引用 3 楼 fredrickhu 的回复:
SQL code
select a.*, isnull(b.mail_pcs,0), insull(b.mail_wgt,0) from b left join a on a.flt=b.flt
SQL code
select a.*, isnull(b.mail_pcs,0), insull(b.mail_wgt,0) from b left join a on a.flt=b.flt
left join出来的结果不对,a表的两行和b表的一行用flt关联都可以取出来
作者: pengxuan 发布时间: 2011-12-18
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28