怎么进行主从表明细查询

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
……
关键就是,在结果里,主表重复的东西不显示出来。

...全文
133 9 打赏 收藏 转发到动态 举报
写回复
用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做不到,查询出数据然后前端处理吧
设计数据库的步骤 收集信息 创建数据库之前,无比充分了解数据库需要完成的任务和功能。简单地说,我们需要了 解数据库需要存储哪些信息(数据),实现哪些功能。以《使用SQL Server 管理和查询数据》的BBS论坛系统为例,我们需要了解BBS论坛的具体功能,与后台数据库 的关系。 用户注册和登录,后台数据库需要存放用户的注册信息和在线状态信息。 用户发帖,后台数据库需要存放帖子的相关信息,如帖子内容、标题等。 论坛版块管理,后台数据库需要存放各个版块的相关信息,如版主,版块名称和帖子 数等。 标识对象 在收集需求信息以后,必须标识数据库要管理的关键对象或实体。我们曾在java中学 习过对象的概念。对象可以是有形的事物,如商业交易、公司部门或发薪周期。在系统 中标识这些对象之后,与它们相关的对象就会调理清楚。以《使用SQL Server 管理和查询数据》的BBS论坛系统为例我们需要标识出系统中的主要对象(实体)。注意 :对象一般是名词,一个对象只描述一件事情,不能重复出现含义相同的对象。 论坛用户:包括论坛普通发帖用户、回帖用户、各版块的版主。 帖子:用户发的帖子或者是会的帖子。 版块:论坛的各个版块信息。 数据库中每个不同的对象都拥有一个与其对应的表,也就是说,在我们数据库中,会 对至少三张表,分别是用户表,帖子表和版块表。 标识每个对象需要存储的详信息 将数据库中的主要对象标识为表的候选对象以后,下一步就是标识每个对象存储的详 信息 ,也称为该对象的属性,这些属性将组成表中的列。简单的说,就是需要分出每个对 象包含的子成员信息,以《使用SQL Server 管理和查询数据》的BBS论坛系统为例,我们逐步分解每个对象的子成员信息,在分解时 又发现发帖和回帖的不同,所以把帖子分为发帖和回帖两个对象(实体)。 转自准信软件培训: 用户名(昵称) 密码 电子邮件 生日 性别 论坛用户 用户的等级 备注信息 注册日期 状态(例如是否被禁言,是否在线) 用户的积分 发帖人 发帖表情:发帖时选用的表情 回复数量 标题 发帖 正文 发帖时间 点击数 状态:例如是否被锁,是否为精华帖 最后回复时间 帖子单号 回帖人 回帖表情 回帖 标题 正文 回帖时间 点击数 版块名称 版主 版块 本班留言 点击率 发帖数 标识对象(实体)之间的关系 关系型数据有一项非常强大的功能,它能够关联数据库中的各个项目的相关信息。不用 类型的信息可以单独存储,但是如果需要,数据库殷勤可以根据需要将数据组合起来。 在设计过程中,要标识对象之间的关系,需要分析数据库表,确定这些表在逻辑上是如 何相关的,然后添加关系列简历起表之间的连接。以《使用SQL Server 管理和查询数据》的BBS论坛系统为例。 a.发帖和回帖有主从关系,我们需要在回帖对象中表明它是谁的回帖。 b.版块管理总的版主和论坛用户有关系,从用户对象中科院跟进版块对象查出对应的版 块和发帖又主从关系,需要表明发帖是属于哪个版块的。 c.版块与回帖有主从关系,需要表明回帖是属于哪个版块的。 ----------------------- 设计数据库的步骤全文共3页,当前为第1页。 设计数据库的步骤全文共3页,当前为第2页。 设计数据库的步骤全文共3页,当前为第3页。

22,210

社区成员

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

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