首页 热点资讯 义务教育 高等教育 出国留学 考研考公

求mysql多表查询的语句

发布网友 发布时间:2022-04-27 01:31

我来回答

3个回答

热心网友 时间:2022-05-02 16:24

最下面有代码 ,改后的.拿去吧.
-----------------------------------------
如下:看着修改吧.
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 英语 .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 .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

*/

热心网友 时间:2022-05-02 17:42

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

热心网友 时间:2022-05-02 19:16

yiuuyi

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com