以文本方式查看主题 - 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=104608) |
-- 作者:goldenfont -- 发布时间:2017/8/1 18:06:00 -- 这个SQL语句怎么写? 主表: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 -- 发布时间:2017/8/1 18:07:00 -- 也就是显示出来 1 n1 1 n11 True 2 n2 2 n21 True 3 n3 空 空 空
|
-- 作者:有点甜 -- 发布时间: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 -- 发布时间:2017/8/2 16:37:00 -- 使用上面的语句,会把 1 n1 1 n11 True 1 n1 1 n12 False搞出来的,我不要这个,有办法吗? 2 n2 2 n21 True 3 n3 空 空 空 |
-- 作者:有点甜 -- 发布时间: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
|