求三表联合查询的SQL查询语句
table2中id,name;
table3中id,name,table2_id;
三表是互相关联的,要查所有字段并且排序请问这个语句怎么写?
上面写错了,是下面的
table1中id,name,table2_id,table3_id;
table2中id,name;
table3中id,name,table2_id; 展开
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(关系表)。
请点击输入图片描述
表2:sys_role(下图)
请点击输入图片描述
表3:sys_user_role(下图)
请点击输入图片描述
表1:user(下图)
算了,建表语句也给你们了,你们自己测试,这样更详细,(程序员)多动手,比什么都好。(这里的 界面 对写代码不太友好,我放博客里了,自己复制粘贴测试使用就行)
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表是关系表的情况。
2024-06-11 广告
车讯语句: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
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上测试通过,同样可以用于其他数据库,如有疑问请留言
比如有三张表,student,teacher , project :
第一种方法:select * from student,teacher,project where student.id=teacher.sid and student.id=project.sid;
第二种:select * from student inner join teacher on student.id=teacher.sid inner join project on student.id=project.sid;
你想查询的所有字段是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
具体更具你需求而定了。