簡單的兩表! 礼拜天结账!

angelior 2003-04-24 06:56:43
现有两表,字段如下:
表一:
Id name num
1 a 11
2 b 22
3 b 33

表二:
Id parentID
1 2

表二的parentID关联表一的Id

现要得到如下数据:(把表二中数据附加到表一中)
Id name num tableTwoNum
1 a 11 0
2 b 22 22
3 b 33 0


礼拜天结账!
...全文
31 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
angelior 2003-04-28
  • 打赏
  • 举报
回复
:)
OK!
happydreamer 2003-04-25
  • 打赏
  • 举报
回复
select a.*,
(case when b.id is null then 0 else a.num end ) as tableTwoNum,
(case when b.id is null then 0 else a.num end )*
(select count(*) from #table3 where secondtableid=b.id) as tableThreeNum
from #table1 a left join #table2 b on a.id=b.parentid


example

table2
Id parentID
1 2
2 1
3 2

insert table3 select 4, 3, 2 select 5, 3, 3

----
Id name num tableTwoNum tableThreeNum
1 a 11 11 11
2 b 22 22 66
2 b 22 22 22
3 b 33 0 0



angelior 2003-04-25
  • 打赏
  • 举报
回复
最终结果是以表一作为主表,其它表中有关联的数据按表一的ID分组计算出num后附加到表一中一新字段.
angelior 2003-04-25
  • 打赏
  • 举报
回复
现在上两表基础上又多一个表:
表三:(FirstTableId关联表一ID,SecondTableID关联ID)
Id FirstTableId SecondTableID
1 3 1
2 3 1
3 3 1
要得到:
(相当于表三的数据按FirstTableId分组合计后附加到表一中)
Id name num tableTwoNum tableThreeNum
1 a 11 0 0
2 b 22 22 66
3 c 33 0 0
happydreamer 2003-04-25
  • 打赏
  • 举报
回复
table2
Id parentID
1 2
2 1
3 2

只要楼主的答案的话改为
select distinct a.*,
(case when b.id is null then 0 else a.num end ) as tableTwoNum
from table1 a left join table2 b on a.id=b.parentid


如果需要table2.id
select a.*,b.id,
(case when b.id is null then 0 else a.num end ) as tableTwoNum
from table1 a left join table2 b on a.id=b.parentid


----

a.Id name num b.id tableTwoNum
1 a 11 2 11
2 b 22 1 22
2 b 22 3 22
3 b 33 NULL 0



谢谢 joygxd() 偶没有考虑周全 ;)
joygxd 2003-04-25
  • 打赏
  • 举报
回复
happydreamer! :
当table2.parentid有重复时肯定会重复不知道可不可以

happydreamer 2003-04-25
  • 打赏
  • 举报
回复
SecondTableID关联是表2的id 按照你的示例数据

如果表2有重复parentid
1 2
3 2
而表3的数据为
1 3 1
2 3 1
3 3 1
4 3 3
表3有两项对应表2的id

是不是要得到这样的结果
Id name num tableTwoNum tableThreeNum
1 a 11 11 00
2 b 22 22 66
2 b 22 22 22 --表1 id为2的记录数量相加
3 c 33 0 0


Id name num tableTwoNum tableThreeNum
1 a 11 11 0
2 b 22 22 88
3 c 33 0 0

改为这样
select c.id,c.name,c.num,c.tabletwonum,c.tabletwonum*count(d.secondtableid)
as tableThreeNum
from
(select a.*,isnull(b.id,0) bid ,(case when b.id is null then 0 else a.num end ) as tableTwoNum from t1 a left join t2 b on a.id=b.parentid) c
left join t3 d
on d.secondtableid=c.bid
group by c.id,c.name,c.num,c.tabletwonum
angelior 2003-04-25
  • 打赏
  • 举报
回复
NO,NO
最终结果只能是以表一为唯一性表,就是说查到的记录数只能为表一中的记录数。
teaism 2003-04-24
  • 打赏
  • 举报
回复
agree happydreamer!
happydreamer 2003-04-24
  • 打赏
  • 举报
回复

改一下:

select a.*,
(case when b.id is null then 0 else a.num end ) as tableTwoNum
from table1 a left join table2 b on a.id=b.parentid
happydreamer 2003-04-24
  • 打赏
  • 举报
回复
select a.*,
(case when b.id is null then 0 else a.num end ) as tableTwoNum
from table a left join table b on a.id=b.parentid
caiyunxia 2003-04-24
  • 打赏
  • 举报
回复
select a.id,name, num, sum(isnull(parentID,0))
from table1 left join table2 on a.id=b.id
group by a.id,name, num
jimzj 2003-04-24
  • 打赏
  • 举报
回复
select a.id, a.name, a.num,
tabletwonum=case when ( select count(*) from table2 where parent_id = a.id ) > 0 then a.num else 0 end from table1 a
  鸿威软件适用于台球厅、桌球馆、台球俱乐部、棋牌房、棋牌室、苶座 、网球场、网球馆、网球俱乐部、乒乓球场、乒乓球馆其它按时消费场所。它主要包括三个功能板块,分别为:基本功能,高级功能和系统功能。 基本功能:会员档案及管理、商品档案及管理、计费方式设置、桌台档案设置、会员级别设置、积分规则设置、技师培训设置、器材出租设置、临时打折设置、优惠券设置、储物柜管理、我的记事本、系统运行参数设置、用户及权限设置。 鸿威台球计费管理软件专注于计费管理软件的研发,对台球厅、棋牌室、羽毛球馆等场所的运营有着深入的了解,真正站在经营者的角度思考,掌握了台球厅等场所的经营核心技术,为台球厅经营者量身打造一套完善的日常经营管理软件,让您高枕无忧,帮助您的台球厅日进斗金。 会员档案及管理功能 鸿威台球计费管理系统通过办理发放会员卡为桌台费打折,充值奖励现金,以及积分兑换礼品,积分兑换桌台费等优惠方式来吸引、留住顾客已经成为大部分台球厅的一种营销手段。鸿威台球计费管理软件,会员档案及管理功能,可以轻松为会员办理不同优惠级别的会员卡,并支持会员拍照功能,杜绝乱用会员卡、冒名顶替等情况。支持现金以及银行卡等支付方式为会员充值。 独有的会员首次存款以及每次存款的最低额度设置以及会员卡内余额不足自动提醒功能。支持会员简码以及手机号等模糊查询。更多独有功能不一一罗列,请联系我们的客服人员为您提供试用版台球厅计费管理软件。 商品档案及管理功能 鸿威台球计费管理系统可以对商品进行分类管理,不同的商品设置不同的分类,轻松查看,商品一目了然,可对商品进行入库管理,支持库存不足提醒功能,以免造成库存不足而影响商品销售,支持输入商品首字母,不用为商品种类繁多不好查找而担忧。支持商品设置商品价格、外卖价格以及进货价格,方便查看商品销售盈利情况。支持商品档案报表导出等功能。 计费方式设置 鸿威台球计费管理系统可以设置每天不同的时间段不同的计费方式。每天最多可设置6个时间段。同一时间段,星期一到星期五、星期六、星期天、节假日可以设置不同的费率。不同时间段可设置最低折扣, 折扣率为1时不打折。不同的会员级别同一时间段也可设置不同的费率。软件计费方式设置灵活可满足市面上百分之九十以上球厅的计费设置需求。 计费周期设置就是我们平时所说的多少分钟为一个计费单位,例如每小时18元我们可以设置为10分钟为一个计费单位,超过3分钟算一个计费周期,这样就相当于在10分钟以内查过3分钟就收费3元,13分钟收费也是3元,14分钟收费6元。可根据自己球厅的实际情况灵活设置值计费周期。 设有起步价以及起步时间,例如费率为18元/小时,我们可以设置起步价为9元,起步时间为3分钟,如果客户开始三分钟离开不收取费用,超过三分钟收费9元。更多计费方式设置功能不一一罗列,请联系我们的客服人员为您提供试用版台球厅计费管理软件。 桌台档案设置 鸿威台球计费系统支持不同场所不同费率的不同收费模式,桌台可灵活设置不同的计费方式以及不同的桌台图标打破以往枯燥呆板的桌面图标。例如:黑八、斯诺克、九球、棋牌室、羽毛球等。 会员级别设置 鸿威台球计费管理系统可以为会员设置不同的优惠级别,桌台费、商品费等设置不同的折扣率,设置不同的办卡费用以及最低充值费用和卡内最低余额设置。可设置允许卡内扣除的费用以及使用适用于的场所。多种存款奖励方式供您选择。 临时打折设置 鸿威台球计费管理系统可设置整单全免、免台费、临时打9折打8折等多种折扣,此功能可用于熟人打球临时打折以及店面搞活动的临时折扣。 用户及权限设置 鸿威台球计费管理软件可单独对收银员设置权限,根据球厅的实际情况给收银员相应的权限。杜绝收银漏洞,让您放心把台球厅交给收银员搭理。 统计报表 鸿威台球厅计费管理系统报表丰富 桌台结账明细表:每一张台子的消费信息,开始结束时间以及结算方式都清晰体现。 商品销售明细表:每一种商品的消费信息,价格都可以在此查看 现金流水账及存取:每天的现金收入支出情况可以在此查看 商品库存机最低限量:每一种商品的剩余库存以及进货价格及最低库存可以再次查看 统计报表中心:台球厅所有的营业收入、商品进消信息、会员存取款消费信息、短信发送记录、每日营业情况、商品入出库信息等都可以再统计报表里轻松查询。 鸿威台球计费系统,性价比高、系统稳定、操作简单、功能实用、报表丰富。是您球厅计费系统的首选。

34,594

社区成员

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

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