select的问题,谢谢了

dos7 2002-04-08 11:22:33
表a 和表b是一对多的关系,a中的a_id是主键,b中的a_id是外键,一条a表中的记录对应2条b表中的记录(b表中的两条记录可通过一个列b_order区分,一大一小),请问该如何用一句select语句,同时显出a的一条记录和与之对应的两条b的记录中的所有列(b中大的记录的列在前)。请各位高手指教。希望的解释一下,谢谢。

...全文
32 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zcflion 2002-04-10
  • 打赏
  • 举报
回复
nononono(null,null) 才是对的!
xhfjy 2002-04-10
  • 打赏
  • 举报
回复
:)以后要求自己把数据和想要的结果给出来
xhfjy 2002-04-10
  • 打赏
  • 举报
回复
:)以后要求自己把数据和想要的结果给出来
mmzxg 2002-04-09
  • 打赏
  • 举报
回复
select a.*,b.* from a right outer join b on a.a_id=b.a_id order by b.a_id
tanqth 2002-04-09
  • 打赏
  • 举报
回复
SELECT a.*
FROM dbo.a RIGHT OUTER JOIN
dbo.b ON dbo.a.a_id = dbo.b.a_id
ilfsm 2002-04-09
  • 打赏
  • 举报
回复
9494

iltg说的不错。诸位高人把一个小问题想的也太复杂了。
iltg 2002-04-09
  • 打赏
  • 举报
回复
不需要这么复杂吧!我觉得wwl007(疑难杂症)的方法就行。不过可能要稍加改动:select b.* from a,b where a.id=b.id order by a.id,b.order desc
流星尔 2002-04-09
  • 打赏
  • 举报
回复
select a.field1,b.field2,b.field3,…… from a join b on a.a_id=b.a_id order by a.a_id,b_order desc
如果a,b有同名字段的话,请不要*号。
nononono 2002-04-09
  • 打赏
  • 举报
回复
"b中大的记录的列在前", 应该是我说的那样吧?
wwl007 2002-04-09
  • 打赏
  • 举报
回复
这个问题没有必要用外连接吧!
select * from a,b where a.id=b.id order by a.id,b.order desc
nononono 2002-04-09
  • 打赏
  • 举报
回复
"同时显出a的一条记录和与之对应的两条b的记录中的所有列(b中大的记录的列在前)。"

到底是什么意思?各位怎么和我理解的不一样?

爱思考的磐石 2002-04-09
  • 打赏
  • 举报
回复
select a.*,test.*
from a,(select * from b
group by b_order
order by b_order)"test"
where a.a_id=test.a_id;
nononono 2002-04-09
  • 打赏
  • 举报
回复
假设你需要得到的b表的字段为fd1,fd2。

select a.a_id,
t1.fd1,b.fd2,
t2.fd1.c.fd2
from a,

(select b.a_id,b.fd1,b.fd2
from b,
(select a_id,max(b_order) as max_b_order from b group by a_id) as bmax
where b.a_id=bmax.a_id and b.b_order=bmax.max_b_order) as t1,

(select b.a_id,b.fd1,b.fd2
from b,
(select a_id,min(b_order) as min_b_order from b group by a_id) as bmin
where b.a_id=bmin.a_id and b.b_order=bmin.min_b_order) as t2

where a.a_id = b.a_id and a.a_id = t1.a_id and a.a_id = t2.a_id


其中:

1. (select a_id,max(b_order) as max_b_order from b group by a_id) as bmax
得到b_order较大的那些记录的a_id和b_order.

2. (select b.a_id,b.fd1,b.fd2
from b,
(select a_id,max(b_order) as max_b_order from b group by a_id) as bmax
where b.a_id=bmax.a_id and b.b_order=bmax.max_b_order) as t1,
得到b_order较大的那些记录的a_id和fd1,fd2



34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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