求一句SQL语句!!

godrose 2008-02-14 05:28:14
有二表
表:aaa 表:bbb
字段 a1 a2 a3 a4 a_id 字段 b_id b1 b2 b3 b4 b5
数据 x1 a10 a20 a30 z123 数据 x1 b21 b31 b41 b51 z123
x2 a20 a20 a20 z123 x1 b22 b32 b42 b52 z123
x3 4 4 4

现想要得到
z_id z1 z2
x1 a10 b21
x1 a10 b22
x2 空 空


select * from aaa a,bbb b where a.a_id=b.b5
这样写的话.只能出
z_id z1 z2
x1 a10 b21
x1 a10 b22

请问有什么办法在把x2也取出来!!!

在线急等!!
...全文
126 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
TNT_1st_excellence 2008-02-15
  • 打赏
  • 举报
回复
LZ你写的也不对吧,bbb表中也没有a1啊(b.a1),改成a.a1,结果也不对哦
TNT_1st_excellence 2008-02-15
  • 打赏
  • 举报
回复
有难度啊
godrose 2008-02-15
  • 打赏
  • 举报
回复
自己结贴:
select * from aaa a left join bbb b on a.a1=b.b_id
where a_id is not null and ( b.a1 not in (select b_id from bbb where b5 is not null) or b.b5 is not null)

godrose 2008-02-15
  • 打赏
  • 举报
回复
skison,你的这个写法只能出
X1 a10 b21
X1 a10 b22

而X2还是没出来!
不过还是感谢!
skison 2008-02-15
  • 打赏
  • 举报
回复
select a.a1, a.a2, b.b1 from aaa a left join bbb b on a.a1=b.b_id
where a.aid = b.b5
godrose 2008-02-15
  • 打赏
  • 举报
回复
我程序的思路是这样的.先从aaa表中找出a_id=z123的记录
然后再从bbb表中先判断是否有b5有z123的记录,如果有,做循环把每条记录取出
如果没有.那需要把aaa表中那条bbb表中没有的记录也显示出来
也就是aaa表中的x2

这个就是啊...
nghf102 2008-02-15
  • 打赏
  • 举报
回复
这个问题有深度,查出的字段值还有部分要转换为空值.
我觉得楼主应该把你的想法写出来,而不是简单的列出表数据和结果.也就是说明白你到底想要做什么
godrose 2008-02-15
  • 打赏
  • 举报
回复
按楼上三位写法,我做了,出现的结果是:

z_id z1 z2
x1 a10 b21
x1 a10 b22
x2 a10 b21
x2 a10 b22
但是这个不是我想要的.
实际的记录应该是三条
x1 a10 b21
x1 a10 b22
x2 空 空 (这个只有一条)
amandag 2008-02-15
  • 打赏
  • 举报
回复
左联结

select a.a1, a.a2, b.b1 from aaa a left join bbb b on a.a_id=b.b5
lxmfll2000 2008-02-15
  • 打赏
  • 举报
回复
select *
from aaa a left join bbb b on a.a_id=b.b5
symbol441 2008-02-15
  • 打赏
  • 举报
回复
试试这个是不是楼主想要的

select a.* from aaa a left join bbb b on a.a_id=b.b5

godrose 2008-02-15
  • 打赏
  • 举报
回复
先谢过各位高手,但这些好像不行.
我程序的思路是这样的.先从aaa表中找出a_id=z123的记录
然后再从bbb表中先判断是否有b5有z123的记录,如果有,做循环把每条记录取出
如果没有.那需要把aaa表中那条bbb表中没有的记录也显示出来
也就是aaa表中的x2

再次请教高手解答,,,

xiaowangtian1117 2008-02-14
  • 打赏
  • 举报
回复
用left join
banma2008 2008-02-14
  • 打赏
  • 举报
回复
学习
zxg117812390 2008-02-14
  • 打赏
  • 举报
回复
看着不是很懂 是要取出a.a_id=b.b5 满足此条件的所有表的数据吗 ?
如果 b5的值都是确定不变的或一样的就很简单了 直接让A.ID= 如果不一样的话还是 先新建一个集合取出表B所有B5的值 然后在新建集合 可以让A.ID包含于 上面建的集合中 我说的是网站中哦 
____苦茶 2008-02-14
  • 打赏
  • 举报
回复
select * from aaa where aid in (select disinct b5 from bbb)
看看这个是不是你想要的

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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