怎么进行主从表明细查询

xuguv 2013-05-06 04:30:26
主表
id name money
1 n1 27
2 n2 51
……

从表
id food
1 f1
1 f2
1 f3
2 f2
2 f7
……
想得到下面的结果
id,name money food
1 n1 27 f1
f2
f3
2 n2 52 f2
f7
……
关键就是,在结果里,主表重复的东西不显示出来。

...全文
136 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jflanmay 2013-05-06
  • 打赏
  • 举报
回复
怎么结果的格式是乱的?LZ自己到数据库查一下就OK了。
jflanmay 2013-05-06
  • 打赏
  • 举报
回复

select 1 as id,'n1' as name,27 as money into t1
insert into t1 select 2,'n2',51
select 1 as id,'f1' as food into t2
insert into t2
select 1,'f2' union
select 1,'f3' union
select 2,'f2' union
select 2,'f7'
select t1.id,t1.name,t1.money,t2.food into t3 from t2 left join t1 on t2.id=t1.id

select ids=case when exists (select 1 from t3 where id=a.id and food<a.food) then '' else id end,
name=case when exists (select 1 from t3 where id=a.id and food<a.food) then '' else name end,
money=case when exists (select 1 from t3 where id=a.id and food<a.food) then '' else money end,
food
 from t3 a order by id,food
ids	name	money	food
1	n1	27	f1
0		0	f2
0		0	f3
2	n2	51	f2
0		0	f7
daiyueqiang2045 2013-05-06
  • 打赏
  • 举报
回复
不知道lz的业务怎么会是这样子的呢?
shugeer 2013-05-06
  • 打赏
  • 举报
回复
这样行吗? select a.*,b.food from 主表 a left join 从表 b on a.id=b.id
發糞塗牆 2013-05-06
  • 打赏
  • 举报
回复
如果你替换成null,可能后续会引用不到这些主表ID。
MrYangkang 2013-05-06
  • 打赏
  • 举报
回复
我觉得你想法可能不太对,主表的信息,你干嘛要去删除变成NULL 如果觉得明细重复,那就不显示它
MrYangkang 2013-05-06
  • 打赏
  • 举报
回复
sql语句真办不到,只能是下面那种结果 id,name money food 1 n1 27 f1 1 n1 27 f2 1 n1 27 f3
xuguv 2013-05-06
  • 打赏
  • 举报
回复
那换个问题 ,有个表,内容如下 id,name money food 1 n1 27 f1 1 n1 27 f2 1 n1 27 f3 2 n2 52 f2 2 n2 52 f7 …… 怎么样把里id,name money 重复的字段值的改成null
發糞塗牆 2013-05-06
  • 打赏
  • 举报
回复
你这种展现方式sql做不到,查询出数据然后前端处理吧

22,302

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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