标准新手问题(回答都有分)

諾临風 2010-06-18 10:19:04
问题一:用JavaScript模拟List<string>集合对象,实现,Remove和Add方法(要能移除指定项)

问题二:有A表:ID:1 Name:张三 有B表:ID:1 Aid:1 Specialy:土木 ID:2 Aid:1 Specialy:流体力学
其中 Aid就是A表中的ID,要求一条SQL实现这样的效果

张三 土木,流体力学


谢谢大家。。。。问题二,只能用SQL,小弟目前只能发100分帖,没办法,也是初学者,如果问题
比较的幼稚的话,不要BS我,谢谢!给思路得两分,给代码得三分,问题如果全解决了,送上一百分。如果不够,可以再开帖。急用!
...全文
231 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
nextuntil 2010-06-18
  • 打赏
  • 举报
回复

var strList = new Array();
//往数组中添加元素
strList.push("a");
strList.push("b");
strList.push("c");
//从指定位置删除元素
strList.splice(1,1);
諾临風 2010-06-18
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 z195389542 的回复:]
SQL code
问题:假设有张学生成绩表(tb)如下:
姓名 课程 分数
张三 语文 74
张三 数学 83
张三 物理 93
李四 语文 74
李四 数学 84
李四 物理 94
想变成(得到如下结果):
姓名 语文 数学 物理
---- ---- ---- ----
李四 74 84 94
张三 74 83 93
---------------……
[/Quote]

受教了。。。。我去改改看,上面的自定义函数的想法不错,以前用过一次,也好温习一下,谢谢!
一步一码 2010-06-18
  • 打赏
  • 举报
回复
select A.name,B.Specialy from A,B where A.ID = B.Aid and A.Id= 1
z195389542 2010-06-18
  • 打赏
  • 举报
回复
问题:假设有张学生成绩表(tb)如下:
姓名 课程 分数
张三 语文 74
张三 数学 83
张三 物理 93
李四 语文 74
李四 数学 84
李四 物理 94
想变成(得到如下结果):
姓名 语文 数学 物理
---- ---- ---- ----
李四 74 84 94
张三 74 83 93
-------------------
*/

create table tb(姓名 varchar(10) , 课程 varchar(10) , 分数 int)
insert into tb values('张三' , '语文' , 74)
insert into tb values('张三' , '数学' , 83)
insert into tb values('张三' , '物理' , 93)
insert into tb values('李四' , '语文' , 74)
insert into tb values('李四' , '数学' , 84)
insert into tb values('李四' , '物理' , 94)
go

--SQL SERVER 2000 静态SQL,指课程只有语文、数学、物理这三门课程。(以下同)
select 姓名 as 姓名 ,
max(case 课程 when '语文' then 分数 else 0 end) 语文,
max(case 课程 when '数学' then 分数 else 0 end) 数学,
max(case 课程 when '物理' then 分数 else 0 end) 物理
from tb
group by 姓名

--SQL SERVER 2000 动态SQL,指课程不止语文、数学、物理这三门课程。(以下同)
declare @sql varchar(8000)
set @sql = 'select 姓名 '
select @sql = @sql + ' , max(case 课程 when ''' + 课程 + ''' then 分数 else 0 end) [' + 课程 + ']'
from (select distinct 课程 from tb) as a
set @sql = @sql + ' from tb group by 姓名'
exec(@sql)

--SQL SERVER 2005 静态SQL。
select * from (select * from tb) a pivot (max(分数) for 课程 in (语文,数学,物理)) b

--SQL SERVER 2005 动态SQL。
declare @sql varchar(8000)
select @sql = isnull(@sql + '],[' , '') + 课程 from tb group by 课程
set @sql = '[' + @sql + ']'
exec ('select * from (select * from tb) a pivot (max(分数) for 课程 in (' + @sql + ')) b')
moshu12 2010-06-18
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 dandeline 的回复:]
连接查询
select a.name,b.specialy from table1 a inner join table2 b on a.ID=b.Aid
[/Quote]
..
  • 打赏
  • 举报
回复
select @chrReturn=''+Specialy+',' from 表2 where 表2.Aid=@chrID 该成
select @chrReturn=chrReturn+','+Specialy from 表2 where 表2.Aid=@chrID
weixiaohuayc 2010-06-18
  • 打赏
  • 举报
回复
select a.name,b.specialy,c.specialy from table1 a join table2 b on a.ID=b.Aid join table2 c on a.ID=c.specialy
  • 打赏
  • 举报
回复
如果有高手的话。。 不用自定义函数就直接能合并了。。 但是我还不行, 说说你的问题一吧
  • 打赏
  • 举报
回复
第2个问题
select Name,funSpecialy(ID) as Specialy from 表1

自定义函数
create function funSpecialy(@chrID varchar(4000))
returns varchar(4000)
as
begin
declare @chrReturn varchar(600)
set @chrReturn=''
select @chrReturn=''+Specialy+',' from 表2 where 表2.Aid=@chrID

return @chrReturn



end
parverxiao 2010-06-18
  • 打赏
  • 举报
回复
连接查询
select a.name,b.specialy from table1 a inner join table2 b on a.ID=b.Aid
幻想多巴胺 2010-06-18
  • 打赏
  • 举报
回复
yanglei6979431 2010-06-18
  • 打赏
  • 举报
回复
用数据库连接查询
諾临風 2010-06-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wang2129929 的回复:]
2个问题我都没看懂, 能重描述下吗?
[/Quote]

第二个问题就是行合并。。。。用一个SQL实现!
zfb312 2010-06-18
  • 打赏
  • 举报
回复
不知道搞,学习下
  • 打赏
  • 举报
回复
2个问题我都没看懂, 能重描述下吗?
tianxueshan2010 2010-06-18
  • 打赏
  • 举报
回复
顺便也学习一下了
諾临風 2010-06-18
  • 打赏
  • 举报
回复
问题补充,问题一大家只需要实现移除指定项即可。。。。。谢谢!
理不完的逻辑 2010-06-18
  • 打赏
  • 举报
回复
友情帮顶~!学习了~!
unling 2010-06-18
  • 打赏
  • 举报
回复
declare @A表 table ( id int, name varchar(6) )
insert into @A表
( id, name )
values ( 1, '张三' )

declare @B表 table (id int,aid int,Specialy varchar(10))
insert into @B表
( id, aid, Specialy )
select 1,1,'土木' union all
select 2,1,'流体力学'


select name ,
[Specialy] = stuff(( select ',' + Specialy
from ( select a.name ,
b.Specialy
from @B表 b
left join @A表 a on b.aid = a.id
) t
where name = tb.name
for
xml path('')
), 1, 1, '')
from ( select a.name ,
b.Specialy
from @B表 b
left join @A表 a on b.aid = a.id
) tb
group by name

/*
name Specialy
------ ---------------------
张三 土木,流体力学
*/

-小蕾- 2010-06-18
  • 打赏
  • 举报
回复
学习了!
加载更多回复(14)

62,046

社区成员

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

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

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

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