SQL server数据库里查询时新建查询怎么进行多表查询?

 我来答
CRLLOVELWR
推荐于2018-12-13 · 超过30用户采纳过TA的回答
知道答主
回答量:168
采纳率:0%
帮助的人:48.6万
展开全部
首先要检查你的表与表之间是不是有约束(主外键约束),如果存在,才可以像 上面这位朋友的方式进行连接,一般连接有左连接、右连接、内连接,下面给你举例:

----做笛卡尔积
select s.id,s.name,sc.id,sc.sname,sc.score from infom s ,score sc

------内连接 写法一
select s.id,s.name,sc.id,sc.sname,sc.score
from infom s ,score sc inner join score sc
on s.id= sc.id ------内连接的条件
------on s.id <>sc.id --------是全集 - 交集
------where sc.score>80

------内连接 方法二
select s.id,s.name,sc.id,sc.sname,sc.score
from infom s ,score sc
where s.id= sc.id

------

-------------------------------------------------------外连接 左连接
--------------左表数据完全显示,右表中相同的数据显示,不同数据null
select Student.name,score.score
from Student left join score -----------------先写的为左表
on Student.id=score .id -----------------连接条件

-------------------------------------------------------外连接 右连接
--------------右表数据完全显示,左表中相同的数据显示,不同数据显示null
select Student.name,score.score
from Student right join score
on Student.id=score .id

-------------------------------------------------------全连接 full join
-------------------------------------------------------左、右表的数据完全显示,相同的数据显示一次
select Student.name,score.score
from Student full join score
on Student.id=score .id

-------------------------------------------------------交叉联接
------------------------------------------交叉联接得到的是两表联接所有的数据组合
------------------------------------------(A表的数据记录* B 表的数据记录)
-------------------------------------------方式一
select Student.*,score.* from Student,score
-------------------------------------------方式二
select score .*,Student.* from Student
cross join score

-----------------------------------------------------多表联接
--------------------------------------要求查出张三 C#的考试成绩,涉及student,score,subject三个表
---------方式一:
select student.name,subject.sname ,score .score
from Student
inner join score
on student.id= score.id
inner join subject
on score.id=subject.id
where Student.name='张三' and subject.sname='C#'

---------方式二:等值联接
select student.name,subject.sname ,score .score
from Student,score ,subject
where StudentDB.id=score.id and score .id=subject.id
and Student.name='张三' and subject.sname='C#'
cygcyg201061ad7
2014-04-10 · TA获得超过1433个赞
知道小有建树答主
回答量:1086
采纳率:58%
帮助的人:537万
展开全部
这位朋友你好!多表查询主要用JOIN(里面又分为LEFT JOIN左连接 和RIGHT JOIN右连接 、JOIN等)
1、一般左连接用得多;SELECT 要显示的字段 FROM 表1
LEFT JOIN 表2 ON 表1.关联字段=表2.关联字段
注:如果还有下表同理写作(后面也可以是右连接等)
2、还有一种全表连接;比如要查询进退货明细表(在数据库可能是两表)
SELECT 两表相似字段 FROM 进货表
UNION ALL
SELECT 两表相似字段 FROM 退货表
注:这种UNION ALL 表示所有的;如果不加ALL是重复的就不显示了。

用得最多的大概就是这两种多表查询的了(当然如果对语言不熟悉,可以利用视图来做,视图是可视化的操作;而且视图的代码也相对来说比较标准的,这也是学习一种方法)
追问
你也学过数据库?能否留下qq或是其他联系方式。此谢!
追答
2017699681
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小龙90
2015-08-13 · 超过30用户采纳过TA的回答
知道答主
回答量:108
采纳率:0%
帮助的人:53.6万
展开全部
首先要检查你的表与表之间是不是有约束(主外键约束),如果存在一般连接有左连接、右连接、内连接,下面给你举例:

----做笛卡尔积
select s.id,s.name,sc.id,sc.sname,sc.score from infom s ,score sc

------内连接 写法一
select s.id,s.name,sc.id,sc.sname,sc.score
from infom s ,score sc inner join score sc
on s.id= sc.id ------内连接的条件
------on s.id <>sc.id --------是全集 - 交集
------where sc.score>80

------内连接 方法二
select s.id,s.name,sc.id,sc.sname,sc.score
from infom s ,score sc
where s.id= sc.id
-------------------------------------------------------外连接 左连接
--------------左表数据完全显示,右表中相同的数据显示,不同数据null
select Student.name,score.score
from Student left join score -----------------先写的为左表
on Student.id=score .id -----------------连接条件

-------------------------------------------------------外连接 右连接
--------------右表数据完全显示,左表中相同的数据显示,不同数据显示null
select Student.name,score.score
from Student right join score
on Student.id=score .id

-----------------------------------全连接 full join
-----------------------------------左、右表的数据完全显示,相同的数据显示一次
select Student.name,score.score
from Student full join score
on Student.id=score .id

-------------------------------交叉联接
---------------------------------交叉联接得到的是两表联接所有的数据组合
------------------------------------------(A表的数据记录* B 表的数据记录)
---------------------方式一
select Student.*,score.* from Student,score
------------------------方式二
select score .*,Student.* from Student
cross join score

-------------------------------多表联接
-----------要求查出张三 C#的考试成绩,涉及student,score,subject三个表
---------方式一:
select student.name,subject.sname ,score .score
from Student
inner join score
on student.id= score.id
inner join subject
on score.id=subject.id
where Student.name='张三' and subject.sname='C#'

---------方式二:等值联接
select student.name,subject.sname ,score .score
from Student,score ,subject
where StudentDB.id=score.id and score .id=subject.id
and Student.name='张三' and subject.sname='C#'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
unique_lele
2015-09-06 · TA获得超过112个赞
知道小有建树答主
回答量:210
采纳率:100%
帮助的人:157万
展开全部
点了新建查询后。直接写关联语句 进行多表查询就可以。语法无非是使用 left join 、right join 、inner join 这些去关联相关表查询。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
水瓶云想衣裳
2014-04-10
知道答主
回答量:34
采纳率:0%
帮助的人:4.5万
展开全部
这个网上太多了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式