求助,3张表联查问题,其中有一联查项可能为空!

lm121342074 2018-01-08 12:04:53
现在有a、b、c,3张表,要查询出满足a.id1=b.fid或者a.id2=c.fid的所有数据,但是a.id2有可能是空值!
现在要写出sql语句,求大神指点下,有点懵!
...全文
722 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
轻狂小疯 2018-04-04
  • 打赏
  • 举报
回复
SELECT id=a.id,name=a.name,bname=b.name1,cname='' FROM a JOIN b ON a.id=b.fid UNION SELECT id=a.id,name=a.name,bname='',cname=c.name2 FROM a JOIN c ON a.id2=c.fid and isnull(a.id2,'')<>'' 实在不放心就加个isnull()的判断呗 没什么难的
lm121342074 2018-01-08
  • 打赏
  • 举报
回复
例如: 主表a id id1 id2 name 意见表b id fid name1 意见表c id fid name2 现在要查询出满足a.id1=b.fid或者a.id2=c.fid 的a.id和a.name数据,现在是id2可能是空,怎么写sql语句
唐诗三百首 2018-01-08
  • 打赏
  • 举报
回复
请提供表结构, 测试数据, 处理逻辑和希望结果.
吉普赛的歌 2018-01-08
  • 打赏
  • 举报
回复
USE tempdb
GO
IF OBJECT_ID('a') IS NOT NULL DROP TABLE a
IF OBJECT_ID('b') IS NOT NULL DROP TABLE b
IF OBJECT_ID('c') IS NOT NULL DROP TABLE c
GO
CREATE TABLE a(id INT,id1 INT,id2 INT,[name] NVARCHAR(20))
CREATE TABLE b(id INT,fid INT,name1 NVARCHAR(20))
CREATE TABLE c(id INT,fid INT,name2 NVARCHAR(20))

SELECT a.id,a.name FROM a INNER JOIN b ON a.id=b.fid
UNION
SELECT a.id,a.name FROM a INNER JOIN c ON a.id2=c.fid
a.id2 为空就没记录, 无所谓的了

591

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧