三张表关联,查询的sql怎么写,求救ne

时间:2021-12-04 14:46:37
三张表关联,查询的sql怎么写,求救ne三张表关联,查询的sql怎么写,求救ne三张表关联,查询的sql怎么写,求救ne
我想得到role_info表的role_id、name和module_info表的name,用的mysql数据库,表示菜鸟入行,太难了,求救。。。。

13 个解决方案

#1


表之间没有关联关系么???? 三张表关联,查询的sql怎么写,求救ne

#2


引用 1 楼 qq_25371977 的回复:
表之间没有关联关系么???? 三张表关联,查询的sql怎么写,求救ne


role_module表就是分别关联两张表的呀

#3


SELECT
    m.name
FROM
    module_info m,
    role_module rm,
    role_info r
WHERE
    r.role_id = 'XXXXXXX'
AND rm.module_id = m.module_id
AND r.role_id = rm.role_id

我只知道这样可以查出roid_对应的module信息,其他人看看怎么发挥,我不会

#4


将主表和第二个表的连接 视作一张表  再与第三个表相连接

select  * 
from
(role_module m 
left join role_info i
on m.role_id = i.role_id)
left join module_info mi
on m.module_id = mi.module_id

#5


select r.role_id,r.name,a.name from role_info r 
join role_module m on m.role_id=r.role_id 
join module_info a on m.module_id=a.module_id;

楼上的我不知道行不行,没试过,我一直都是这种方式写的

#6


顺便吐槽一下 这表是谁设计的  挺傻的

#7


引用 6 楼 gangai6240 的回复:
顺便吐槽一下 这表是谁设计的  挺傻的
哈哈,我也觉得,明明两只表就可以,偏要写三张表

#8


一种left join 一种直接查询 看自己喜欢吧

#9


前面两张表选一个主表,然后left join 一下module表 然后再用 module表left join一下另外一张表关联字段就是id,然后看你要查哪些字段就行了。。刷新看了下 前面几楼的写法应该都是可以的 

#10



select r.role_id, r.module_info, m.name 
from role_info r, module_info m, role_module rm
where rm.module_id = m.module_id and r.role_id = rm.role_id

#11


你要的是笛卡尔积那样的还是说以哪一张表作为主表查询?

#12



Select 
    t2.name role_name,t3.name module_name 
From role_module t1 
Left Join role_info t2 On t2.role_id = t1.role_id 
Left Join module_info t3 On t3.module_id = t1.module_id;

#13


结帖了,每个人分点。换了表结构

#1


表之间没有关联关系么???? 三张表关联,查询的sql怎么写,求救ne

#2


引用 1 楼 qq_25371977 的回复:
表之间没有关联关系么???? 三张表关联,查询的sql怎么写,求救ne


role_module表就是分别关联两张表的呀

#3


SELECT
    m.name
FROM
    module_info m,
    role_module rm,
    role_info r
WHERE
    r.role_id = 'XXXXXXX'
AND rm.module_id = m.module_id
AND r.role_id = rm.role_id

我只知道这样可以查出roid_对应的module信息,其他人看看怎么发挥,我不会

#4


将主表和第二个表的连接 视作一张表  再与第三个表相连接

select  * 
from
(role_module m 
left join role_info i
on m.role_id = i.role_id)
left join module_info mi
on m.module_id = mi.module_id

#5


select r.role_id,r.name,a.name from role_info r 
join role_module m on m.role_id=r.role_id 
join module_info a on m.module_id=a.module_id;

楼上的我不知道行不行,没试过,我一直都是这种方式写的

#6


顺便吐槽一下 这表是谁设计的  挺傻的

#7


引用 6 楼 gangai6240 的回复:
顺便吐槽一下 这表是谁设计的  挺傻的
哈哈,我也觉得,明明两只表就可以,偏要写三张表

#8


一种left join 一种直接查询 看自己喜欢吧

#9


前面两张表选一个主表,然后left join 一下module表 然后再用 module表left join一下另外一张表关联字段就是id,然后看你要查哪些字段就行了。。刷新看了下 前面几楼的写法应该都是可以的 

#10



select r.role_id, r.module_info, m.name 
from role_info r, module_info m, role_module rm
where rm.module_id = m.module_id and r.role_id = rm.role_id

#11


你要的是笛卡尔积那样的还是说以哪一张表作为主表查询?

#12



Select 
    t2.name role_name,t3.name module_name 
From role_module t1 
Left Join role_info t2 On t2.role_id = t1.role_id 
Left Join module_info t3 On t3.module_id = t1.module_id;

#13


结帖了,每个人分点。换了表结构