当前位置:首页 » 编程语言 » 三表联查sql题集
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

三表联查sql题集

发布时间: 2022-11-27 16:51:14

‘壹’ sql三表关联查询

select a.*,c.f from (select * from a inner join b on a.a = b.a) as a inner join c on a.d = c.d

select a.*,c.f from a inner join b on a.a = b.a inner join b.d = b.d

两个都可以,第一个更容易理解,括号里的部分是查询出查询表A的数据和当表A的a=表B的a的数据,把这个结果集,再inner join c on a.d = c.d

查询出表B的d=表C的d 所对应的f的值。

(1)三表联查sql题集扩展阅读:

三个表左连接的sql语句

select

intro_web_page.id,

web_id,

web_name,

template_id ,

template_name,

template_param,

intro_web_page.sort_order

from intro_web_page left join intro_web on (web_id=intro_web.id)

left join intro_template on (intro_web_page.template_id=intro_template.id)

注:这里主要是看,当两个表和某一个表都有联系的时候,左连接left join on要怎么写。

更新语句

UPDATE issue INNER JOIN user ON `issue`.insert_uid and `user`.id INNER JOIN

(SELECT issue.id as id,issue.insert_uid as uid,`user`.school_id as school_id,school.area as area1 from issue,user,school

where issue.insert_uid=`user`.id and `user`.school_id=school.id) AS T1

ON issue.insert_uid=T1.uid

SET issue.area=T1.area1

‘贰’ SQL 三表联合查询,查询一个表的和

分类表A 题目表B 答题情况表C
select d.did,d.c1,e.c2 from
( SELECT B.DID COUNT(C.RID) AS C1 FROM C
INNER JOIN B ON B.TID = C.TID
GROUP BY B.DID ) d
left join
( SELECT B.DID COUNT(C.RID) AS C2 FROM C
INNER JOIN B ON B.TID = C.TID
WHERE C.Istrue = 1
GROUP BY B.DID) e on e.did = d.did

‘叁’ 三表联查的SQL语句

这问题交给我吧,假设学生表叫student,课程表叫class,选课表叫choose
1.三层嵌套的问题
select student.name from student where student.id IN
(select choose.sid from choose where choose.cid NOT IN
(select class.id from class where class.teacher='李明'))
2.一个内连接,一个嵌套
select student.name,avg(choose.score) from
student inner join choose on student.id=choose.sid
where student.id IN
(select choose.sid from choose
where choose.score<'60'
group by choose.sid
having count(choose.sid)>=2)
gruop by student.id
3.一个联合查询,一个嵌套查询
select student.name from student
where student.id IN
(select c1.sid from choose c1 where choose.cid='1'
union
select c2.sid from choose c2 where choose.cid='2'
on c1.sid=c2.sid
)
4.好吧,看起来很难,其实就是自连接查询和行列交换的问题
select student.id,
(case choose.id when '1' then choose.score end) as 1号课成绩,
(case choose.id when '2' then choose.score end) as 2号课成绩,
from student inner join choose on student.id=choose.sid sc1,
student inner join choose on student.id=choose.sid sc2
where sc1.id='1'
and sc2.id='2'
and sc1.score>sc2.score

5.至于你说的insert报错的问题,我想可能是因为学生ID和课程ID这两个外键有重复的值,
你可以检查下,实在不行删除外键,插入数据,在这里外键对你最后要的结果影响不大。

纯手工打造~有帮助记得给分哈

‘肆’ 哪位大虾有经典的sql三表联查的习题呢,我面试需要,急需冲冲电啊,比如 像学生,课程,分数,这种三表之

为管理岗位业务培训信息,建立3个表:
S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄
C (C#,CN ) C#,CN 分别代表课程编号、课程名称
SC ( S#,C#,G ) S#,C#,G 分别代表学号、所选修的课程编号、学习成绩
要求实现如下5个处理:
1. 使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名
2. 使用标准SQL嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位
3. 使用标准SQL嵌套语句查询不选修课程编号为’C5’的学员姓名和所属单位
4. 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位
5. 查询选修了课程的学员人数
6. 查询选修课程超过5门的学员学号和所属单位

**************问题描述************:

已知关系模式:
S (SNO,SNAME) 学生关系。SNO 为学号,SNAME 为姓名
C (CNO,CNAME,CTEACHER) 课程关系。CNO 为课程号,CNAME 为课程名,CTEACHER 为任课教师
SC(SNO,CNO,SCGRADE) 选课关系。SCGRADE 为成绩

要求实现如下5个处理:
1. 找出没有选修过“李明”老师讲授课程的所有学生姓名
2. 列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩
3. 列出既学过“1”号课程,又学过“2”号课程的所有学生姓名
4. 列出“1”号课成绩比“2”号同学该门课成绩高的所有学生的学号
5.列出“1”号课成绩比“2”号课成绩高的所有学生的学号及其“1”号课和“2”号课的成绩

‘伍’ 如何sql三张表关联查询

三张表关联查询
使用场景:A\B\C 三张表,现在要查询并展示A表和C表中的某些字段,但是A、C两表没有相同字段,无法关联,此时有B表恰好有两个字段,一个字段和A表一个字段相同,一个字段和C表一个字段相同,我们称B表为“中间表”,因此通过B表把A、C表关联起来
SELECT A1,A2,C1,C2 --展示A表中的A1\A2字段和C表中的C1\C2
FROM B --中间表
INNER JOIN A ON A.A1 = B.B1 --A表中的与B表中相同的字段
INNER JOIN C ON C.C1 = B.B1 --C表中的与B表中相同的字段
where xxxxx ---条件你自己按照需求来加,没有条件就不写where了

‘陆’ 求三表联合查询的SQL查询语句

1、SQL语句:select u.*,r.*,r.id rid

from user u left join sys_user_role sur on u.id = sur.useridleft join sys_role r on sur.roleid = r.id

图片:(表名截图)

  • 算了,建表语句也给你们了,你们自己测试,这样更详细,(程序员)多动手,比什么都好。(这里的 界面 对写代码不太友好,我放博客里了,自己复制粘贴测试使用就行)

    sql语句地址:网页链接

    2、SQL语句解释:

    select a.*,b.*

    from a表 a left join b表 b on a.id = b.aid

    left join c表 c on b.cid = c.id

    注2:此语句适合a表与c表连接,b表是关系表的情况。

‘柒’ 求三表联合查询的SQL查询语句

第一种方法:select * from student,teacher,project wherestudent.id=teacher.sid andstudent.id=project.sid;

第二种:select * from student inner join teacher onstudent.id=teacher.sid inner join project onstudent.id=project.sid。

‘捌’ sqlserver三表联查sql语句

假设学生表叫student,课程表叫class,选课表叫choose
1.三层嵌套的问题
select student.name from student where student.id IN
(select choose.sid from choose where choose.cid NOT IN
(select class.id from class where class.teacher='李明'))
2.一个内连接,一个嵌套
select student.name,avg(choose.score) from
student inner join choose on student.id=choose.sid
where student.id IN
(select choose.sid from choose
where choose.score<'60'
group by choose.sid
having count(choose.sid)>=2)
gruop by student.id
3.一个联合查询,一个嵌套查询
select student.name from student
where student.id IN
(select c1.sid from choose c1 where choose.cid='1'
union
select c2.sid from choose c2 where choose.cid='2'
on c1.sid=c2.sid
)
4.其实就是自连接查询和行列交换的问题:
select student.id,
(case choose.id when '1' then choose.score end) as 1号课成绩,
(case choose.id when '2' then choose.score end) as 2号课成绩,
from student inner join choose on student.id=choose.sid sc1,
student inner join choose on student.id=choose.sid sc2
where sc1.id='1'
and sc2.id='2'
and sc1.score>sc2.score

‘玖’ sql笔试题三表联查求解

select sum (m.order_price) from (select * from sellorders m ,(select * from branch b, storehouse n where b.branch_id = n.branch_id)t where m.store_id = t.store_id and m.delivery_state = 15 and (m.order_price>500) and (date(m.order_time) between '2015-03-01' and '2015-03-31') and b.branch_id = ?)
传个分公司ID参数就能查到这个公司的了。

‘拾’ SQL 三表联查

当表1 与表2、表3关联查询时,查询表2、表3的条件还需要加吗?

表2里是存在 表2.hsdwdm = 005001,表2.kjnd != 2018的记录?表3也是,是否存在 表3.fzdm = 2040201,表3.kjnd != 2018的数据?

我先给你写个所有条件都加上的吧,不需要的话你从where 子句中去掉

SELECTDISTINCT
a.gsdm,
a.ZTH=gsdm+',001',
a.fzdm4,
c.fzmc,
b.hsdwdm
FROM
ql_pznra
LEFTJOINGL_ZtcsbONa.gsdm=b.hsdwdm
LEFTJOINgl_fzxzlcONa.fzdm4=c.fzdm
WHERE
LEFT(a.kjqj,4)>='2018'
ANDa.kmdmLIKE'6001%'
ANDa.zth='001'
ANDb.kjnd='2018'
ANDb.ztbh='001'
ANDc.kjnd='2018'
ANDc.lbdm='4';