| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2391 人关注过本帖
标题:如何改成左连接
只看楼主 加入收藏
louzhenghong
Rank: 1
等 级:新手上路
帖 子:54
专家分:5
注 册:2016-4-25
收藏
得分:0 
回复 10楼 mywisdom88
表.rar (1.42 KB)
2016-05-19 14:01
louzhenghong
Rank: 1
等 级:新手上路
帖 子:54
专家分:5
注 册:2016-4-25
收藏
得分:0 
select a.*,tel as 业主电话,mobile as 业主手机,calibre as 口径,d.meter_id
from bx a left join a_card d on a.卡号 =d.card_no
left join a_client c on  d.client_no = c.client_no
left join m_meter b on b.meter_id = d.meter_id
order by 报修时间 desc

通过了,一个个叠加
2016-05-19 14:07
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
以下是引用louzhenghong在2016-5-19 14:07:07的发言:

select a.*,tel as 业主电话,mobile as 业主手机,calibre as 口径,d.meter_id
from bx a left join a_card d on a.卡号 =d.card_no
left join a_client c on  d.client_no = c.client_no
left join m_meter b on b.meter_id = d.meter_id
order by 报修时间 desc

通过了,一个个叠加
通过了?看下图。
图片附件: 游客没有浏览图片的权限,请 登录注册
2016-05-19 14:32
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
大叔,麻烦以后做事规范一点,类型要统一,一个表的 Card_no 字段用数字型,另一个用字符型。绕圈。


*!*    A : bx
*!*    B : m_meter
*!*    C : a_client
*!*    D : a_card

Select a.*, tel As 业主电话, mobil As 业主手机, calibre As 口径 From bx a ;
    left JOIN a_card d On a.卡号 = Val(d.Card_no) ;
    left JOIN a_client c On d.Client_no = c.Client_no ;
    left JOIN m_meter b On b.Meter_id = d.Meter_id_ ;
    Order By 报修时间 Desc

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-05-19 14:41
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
程序代码:
select a.*,c.tel as 业主电话,c.mobil as 业主手机,b.calibre as 口径 from bx a ;
left outer join m_meter b on a.卡号 =b.meter_id ;
left outer join a_client c on a.卡号 =c.client_no ;
left outer join a_card d on a.卡号 =d.meter_id ;
order by 报修时间 desc

图片附件: 游客没有浏览图片的权限,请 登录注册
2016-05-19 14:42
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
大叔,你的代码能够通过?
至少有三个错误:
1. 断行没分号;
2. d.Meter_id_ 字段名错误;
3. Card_no 字段类型不统一或没转换。

摇头。

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-05-19 14:48
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
以下是引用aaaaaa在2016-5-19 14:48:38的发言:

大叔,你的代码能够通过?
至少有三个错误:
1. 断行没分号;
2. d.Meter_id_ 字段名错误;
3. Card_no 字段类型不统一或没转换。
 
摇头。
4.语句中是mobile;表里是mobil
2016-05-19 14:52
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
louzhenghong = 楼政红,是吧?

做事要认真的呀。

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-05-19 14:53
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
以下是引用aaaaaa在2016-5-19 14:53:01的发言:

louzhenghong = 楼政红,是吧?

做事要认真的呀。


楼主,作为关联性质的字段,如你这个的客户号,在整个系统中,都要求是相同类型的,字段名称可以不同;这样有利于规范程序。
一般情况下,关联的客户号,都要求是唯一的。
如下:第1个,第2个表,是用ID来关联,第3个表是用name来关联(其实,也要用ID来关联的,只是为了说明问题)
--create table #t1(id int,name varchar(10))
--create table #t2(id int,sex varchar(2))
--create table #t3(name varchar(10),address varchar(20))

--insert into #t1(id,name) values(1,'张三')
--insert into #t1(id,name) values(2,'李四')
--insert into #t1(id,name) values(3,'王五')
--insert into #t1(id,name) values(4,'赵六')
--insert into #t1(id,name) values(5,'刘七')
--insert into #t1(id,name) values(7,'张三')

--insert into #t2(id,sex) values(1,'男')
--insert into #t2(id,sex) values(2,'女')
--insert into #t2(id,sex) values(3,'男')
--insert into #t2(id,sex) values(4,'女')
--insert into #t2(id,sex) values(6,'女')

--insert into #t3(name,address) values('张三','北京')

select a.id,a.name,b.sex from #t1 a
left join #t2 b on a.id=b.id

select a.id,a.name,b.sex,c.address from #t1 a
left join #t2 b on a.id=b.id
left join #t3 c on a.name=c.name
图片附件: 游客没有浏览图片的权限,请 登录注册

由于表1的姓名"张三"不是唯一,导致用 name关联出现2个。
2016-05-19 15:42
louzhenghong
Rank: 1
等 级:新手上路
帖 子:54
专家分:5
注 册:2016-4-25
收藏
得分:0 
回复 14楼 aaaaaa
我的数据库里有10万条记录,n多个列,这个是我手工给建的
    TEXT TO SqlStr NOSHOW TEXTMERGE PRETEXT 4
        select a.*,tel as 业主电话,mobile as 业主手机,calibre as 口径
        from bx a left join a_card d on a.卡号 =d.card_no
        left join a_client c on  d.client_no = c.client_no
        left join m_meter b on b.meter_id = d.meter_id
        order by 报修时间 desc
    endtext
    sqlexec(con1,SqlStr,'bx02')

执行通过了,如果类型写错,手工建的时候手误了

[此贴子已经被作者于2016-5-20 08:33编辑过]

2016-05-20 08:32
快速回复:如何改成左连接
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032735 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved