求mysql多表查询的语句

我用的是mysql数据库,要查所有学生的所有科目成绩,有三张表学生表(sid,sname,sex),科目表(kid,kname),成绩表(sid,kid,score),在页面显示的效果如下,问语句该怎么写才可以达到此种效果呢?初学者,望大虾指教下我,谢谢了。效果图
最下面有代宴猛码 ,改后的.拿去吧.
-----------------------------------------
如下:看着修改吧.
id sid course result

1 2005001 语文 80.0

2 2005001 数学 90.0

3 2005001 英语 80.0

4 2005002 语文 56.0

5 2005002 数学 69.0

6 2005002 英语 89.0

declare @sql varchar(8000)
set @sql='select sid'
select @sql=@sql+','+course.name+'=isnull(sum(case course when '''+course.name+''' then result end),0)'
from course order by id
set @sql=@sql+' from result group by sid order by sid'
print @sql
exec(@sql)
得出结果

sid 语文灶燃 数学 英语

2005001 80.0 90.0 80.0

2005002 56.0 69.0 89.0
===============================================

CREATE TABLE [dbo].[stu](
[sid] [int] NULL,
[sname] [nvarchar](10) NULL,
[sex] [nvarchar](2) NULL
) ON [PRIMARY]

go
insert into stu values(1,'张三','男隐祥虚')
insert into stu values(2,'李四','男')
GO

CREATE TABLE [dbo].[km](
[kid] [int] NULL,
[kname] [varchar](50) NULL
) ON [PRIMARY]

go
insert into km values(1,'语文')
insert into km values(1,'数学')
insert into km values(1,'英语')
go

CREATE TABLE [dbo].[cj](
[sid] [int] NULL,
[sname] [varchar](50) NULL,
[score] [int] NULL,
[kid] [int] NULL
) ON [PRIMARY]

go
insert into cj values(1,1,60,1)
insert into cj values(2,1,70,2)
insert into cj values(3,1,80,3)
insert into cj values(1,2,65,1)
insert into cj values(2,2,69,2)
insert into cj values(3,2,80,3)
go

select stu.sid,stu.sname,
sum(case km.kname when '语文' then score else 0 end) '语文',
sum(case km.kname when '数学' then score else 0 end) '数学',
sum(case km.kname when '英语' then score else 0 end) '英语'

from cj left join stu on cj.sname=stu.sid
left join km on km.kid=cj.kid
group by stu.sid,stu.sname

/*
sid sname 语文 数学 英语
2 李四 60 68 77
1 张三 60 70 80

*/
你这两个表里没有相同的字拍拿段,那么如果两个表一起查询的时候出现的记录太多了,你也用不了。如果你想查,那么SELECT * FROM A A,B B 就行好贺滚了友余,但我觉得这应该不是你想要的,你最好把表结构改一下,在B表里加一字段,与A表能关联起来,比如ID,
SELECT * FROM A A,B B WHERE A.ID=B.ID
yiuuyi