导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

连接查询

wolflove23 2008-01-07 04:41:01
初学SQL SERVER 2000 有个问题请教一下:
表A学生的基本信息
学号 姓名 年龄 等等吧
001 张三 20
002 李四 21
另一张表放成绩表
学号 科目 分数
001 语文 90
001 数学 95
002 语文 86
002 数学 87
现在我想列出一张表,内容是
学号 姓名 科目 分数
001 张三 语文 90
001 张三 数学 95
002 李四 语文 86
002 李四 数学 87



该如何建立查询呢?
...全文
88 点赞 收藏 11
写回复
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wlzd3636 2008-01-07
怎么发图片 请教下?
回复
wlzd3636 2008-01-07

declare @t1 table(id varchar(50) , name varchar(50) , age int check( age >0))
declare @t2 table(id varchar(50) ,opject varchar(50), marker int check(marker >=0))
insert into @t1 values('001','张三',20)
insert into @t1 values('002','李四',21)
insert into @t2 values('001','语文',90)
insert into @t2 values('001','数学',95)
insert into @t2 values('002','语文',86)
insert into @t2 values('002','数学',87)
select x.id ,x.name, x1.opject , x1.marker from @t1 x inner join @t2 x1 on x.id=x1.id

刚毕业请老鸟指教 -----菜菜鸟
回复
wzy_love_sly 2008-01-07
只要你用sql就对
回复
wolflove23 2008-01-07
我在asp 也可以这样写吗?
回复
dobear_0922 2008-01-07
create table A(学号 varchar(4),姓名 varchar(8),年龄 int)
insert A select '001','张三',20
insert A select '002','李四',21
create table 成绩表(学号 varchar(4),科目 varchar(6),分数 int)
insert 成绩表 select '001','语文',90
insert 成绩表 select '001','数学',95
insert 成绩表 select '002','语文',86
insert 成绩表 select '002','数学',87

select A.学号,姓名,科目,分数
from A join 成绩表 on A.学号=成绩表.学号

/*
学号 姓名 科目 分数
---- -------- ------ -----------
001 张三 语文 90
001 张三 数学 95
002 李四 语文 86
002 李四 数学 87

(4 row(s) affected)
*/

drop table A,成绩表
回复
wzy_love_sly 2008-01-07
declare @tb1 table (学号 varchar(10),姓名 varchar(10),年龄 int)
insert into @tb1 select '001','张三',20
insert into @tb1 select '002','李四',21

declare @tb2 table (学号 varchar(10),科目 varchar(10),分数 int)
insert into @tb2 select '001','语文',90
insert into @tb2 select '001','数学',95
insert into @tb2 select '002','语文',86
insert into @tb2 select '002','数学',87

select a.学号,a.姓名,b.科目,b.分数
from @tb1 a join @tb2 b on a.学号=b.学号


学号 姓名 科目 分数
001 张三 语文 90
001 张三 数学 95
002 李四 语文 86
002 李四 数学 87
回复
-狙击手- 2008-01-07
declare @ta table(学号 varchar(4),姓名 varchar(8),年龄 int)
insert @ta select '001','张三',20
insert @ta select '002','李四',21
declare @tb table(学号 varchar(4),科目 varchar(6),分数 int)
insert @tb select '001','语文',90
insert @tb select '001','数学',95
insert @tb select '002','语文',86
insert @tb select '002','数学',87

select a.姓名,b.*
from @ta a,@tb b
where a.学号 = b.学号

select a.姓名,b.*
from @ta a
full join @tb b on a.学号 = b.学号


select a.姓名,b.*
from @ta a
left join @tb b on a.学号 = b.学号


select a.姓名,b.*
from @ta a
right join @tb b on a.学号 = b.学号
/*
姓名 学号 科目 分数
-------- ---- ------ -----------
张三 001 语文 90
张三 001 数学 95
李四 002 语文 86
李四 002 数学 87

姓名 学号 科目 分数
-------- ---- ------ -----------
张三 001 语文 90
张三 001 数学 95
李四 002 语文 86
李四 002 数学 87

姓名 学号 科目 分数
-------- ---- ------ -----------
张三 001 语文 90
张三 001 数学 95
李四 002 语文 86
李四 002 数学 87

姓名 学号 科目 分数
-------- ---- ------ -----------
张三 001 语文 90
张三 001 数学 95
李四 002 语文 86
李四 002 数学 87


*/
回复
pt1314917 2008-01-07

表A学生的基本信息
学号 姓名 年龄 等等吧
001 张三 20
002 李四 21
另一张表放成绩表
学号 科目 分数
001 语文 90
001 数学 95
002 语文 86
002 数学 87

-----------------------
select a.学号,姓名,科目,分数 from 表A a,表B b where a.学号=b.学号
回复
dobear_0922 2008-01-07
或者用:
select 成绩表.学号,姓名,科目,分数
from A right join 成绩表 on A.学号=成绩表.学号
回复
-狙击手- 2008-01-07
select a.姓名,b.*
from 成绩表 a,学生的基本信息 b
where a.学号 = b.学号
回复
dobear_0922 2008-01-07
select A.学号,姓名,科目,分数
from A join 成绩表 on A.学号=成绩表.学号
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告