求三表联合查询的SQL查询语句

table1中id,name,table2_id;table2中id,name;table3中id,name,table2_id;三表是互相关联的,要查所有字段并且排序请... table1中id,name,table2_id;
table2中id,name;
table3中id,name,table2_id;
三表是互相关联的,要查所有字段并且排序请问这个语句怎么写?
上面写错了,是下面的
table1中id,name,table2_id,table3_id;
table2中id,name;
table3中id,name,table2_id;
展开
 我来答
夜很美71
2020-06-29 · TA获得超过2500个赞
知道小有建树答主
回答量:347
采纳率:82%
帮助的人:41.4万
展开全部

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

图片:(表名截图)

  • 请点击输入图片描述

    请点击输入图片描

  • 注1:user(用户表),sys_role(角色表),sys_user_role(关系表)。

  • 表1:user(下图)

  • 请点击输入图片描述

    请点击输入图片描述

  • 表2:sys_role(下图)

  • 请点击输入图片描述

    请点击输入图片描述

  • 表3:sys_user_role(下图)

  • 请点击输入图片描述

    请点击输入图片描述

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

    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表是关系表的情况。

大野瘦子
高粉答主

2019-05-09 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:1227
采纳率:100%
帮助的人:34.6万
展开全部

车讯语句:select username,psw from (a1 left join a2 on a1.a1_id=a2.a1_id) left join a3 on a1.a1_id=a3.a1_id

这样写:

SELECT

S.SName AS 姓名, CS.CourseName AS 课程, C.Score AS 成绩

FROM Students AS S

INNER JOIN Score AS C ON (S.SCode = C.StudentID)

INNER JOIN Course AS CS ON (CS.CourseID = C.CourseID

扩展资料:

SQL联合查询的分类

一、内连接查询:只查询左边表有且右边表也有的数据,本质上是依据外键关系,在笛卡尔积查询的基础上过滤出正确的数据。

语句有2种形式:

Select * from dept ,emp where dept.id=emp.dept_id

Select * from dept inner join emp on dept.id =emp.dept_id

二、外连接查询:外连接是用于查询俩边一边有一边没有的数据。

三、左外连接查询:在内连接的基础上增加上左边表有而右边表没有的数据

语句:Select * from dept join emp on dept.id=emp.dept_id

四、右外连接:在内连接的基础上增加上右边表没有的记录

语句:Select * from dept right join emp on dept.id =emp.dept_id

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
imlees
推荐于2017-10-09 · TA获得超过328个赞
知道小有建树答主
回答量:138
采纳率:100%
帮助的人:148万
展开全部
select a.id,a.name,b.name,c.name,a.table2_id,a.table3_id,c.table2_id
from table1 a,table2 b,table3 c
where a.table2_id=b.id and a.table3_id=c.id and b.id=c.table2_id
order by a.id;
以上语句在Oracle11g r2上测试通过,同样可以用于其他数据库,如有疑问请留言
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
随性亻
推荐于2017-09-22 · TA获得超过4180个赞
知道小有建树答主
回答量:4622
采纳率:84%
帮助的人:639万
展开全部

比如有三张表,student,teacher , project :

  1. 第一种方法:select * from student,teacher,project where student.id=teacher.sid and student.id=project.sid;

  2. 第二种:select * from student inner join teacher on student.id=teacher.sid inner join project on student.id=project.sid;

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小D_deer
2012-03-13 · 超过38用户采纳过TA的回答
知道小有建树答主
回答量:108
采纳率:0%
帮助的人:82.4万
展开全部
分数给的很高啊!!!!我冲着分数来的~
你想查询的所有字段是3个表的所有字段?还是所有不同的字段?仅 ID,Name?
想要排列的方式是?
id ,name,
1 , xxxxx
2 , xxxxx
3 , xxxxx
....
还是?
table1_id ,name, table2_id, name, table3_id ,name
T1 , xxxx , T2 , xxxxx , T3 ,xxxxx
T1_B , xxxx , T2_b ,xxxxx , T3 ,xxxxx
问题给的不是很详细。需求不是很明确哦~
下面是第一种方式的SQL语句:
select id ,name
from table1 T1
union
select T2.id ,T2.name
from table2 T2, table1 T1
where T2.id=T1.table2_id
union
select T3.id, T3.name
from table3 T3, table1 T1
where T3.id=T1.table3_id

这样应该可以抓到所有你想要的数据,至于排序的话,不知道你是想根据ID 排序还是根据 name
来排序。添加排序的话,
就在上面所有where 条件后面加上
order by id 或者order by name 或者order by id,name
具体更具你需求而定了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式