Foxtable(狐表)用户栏目专家坐堂 → 这个SQL语句怎么写?


  共有1727人关注过本帖树形打印复制链接

主题:这个SQL语句怎么写?

帅哥哟,离线,有人找我吗?
goldenfont
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:389 积分:3904 威望:0 精华:0 注册:2016/4/25 17:36:00
这个SQL语句怎么写?  发帖心情 Post By:2017/8/1 18:06:00 [只看该作者]

主表:A

AID    Name
1      n1
2      n2
3      n3

从表:B
BID    Name   IfValid
1        n11        True
1        n12        False
2        n21        True

我想组合sql语句显示出来主表的每一条记录,对应从表中若有True数据,则只显示True的从表数据,没有就空在那里,我写了:
select * f rom {表A} as A
left join {表B} as B on A.AID=B.BID where B.IfValid = 1,显示出来不对,只有1,2两条数据,3没有了,我想3不管有没有从表记录都显示出来

 回到顶部
帅哥哟,离线,有人找我吗?
goldenfont
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:389 积分:3904 威望:0 精华:0 注册:2016/4/25 17:36:00
  发帖心情 Post By:2017/8/1 18:07:00 [只看该作者]

也就是显示出来
1  n1   1    n11  True
2  n2   2    n21  True
3  n3   空   空      空

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/1 18:43:00 [只看该作者]

select aid, a.name, iif(B.IfValid=1, b.bid, null) as bid, iif(B.IfValid=1, b.name, null) as bname from {表A} as A left join {表B} as B on A.AID=B.BID

 回到顶部
帅哥哟,离线,有人找我吗?
goldenfont
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:389 积分:3904 威望:0 精华:0 注册:2016/4/25 17:36:00
  发帖心情 Post By:2017/8/2 16:37:00 [只看该作者]

使用上面的语句,会把
1  n1   1    n11  True
1  n1   1    n12   False搞出来的,我不要这个,有办法吗?
2  n2   2    n21  True
3  n3   空   空      空

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/2 17:19:00 [只看该作者]

select aid, a.name, bid, b.name from {表A} as A left join {表B} as B on A.AID=B.BID where B.IfValid = 1 or B.IfValid is null

 

或者

 

select aid, a.name, iif(B.IfValid=1, b.bid, null) as bid, iif(B.IfValid=1, b.name, null) as bname from {表A} as A left join {表B} as B on A.AID=B.BID  where B.IfValid = 1 or B.IfValid is null

 回到顶部