我想得到role_info表的role_id、name和module_info表的name,用的mysql数据库,表示菜鸟入行,太难了,求救。。。。
13 个解决方案
#1
表之间没有关联关系么????
#2
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信息,其他人看看怎么发挥,我不会
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
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
哈哈,我也觉得,明明两只表就可以,偏要写三张表
#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
表之间没有关联关系么????
#2
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信息,其他人看看怎么发挥,我不会
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
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
哈哈,我也觉得,明明两只表就可以,偏要写三张表
#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
结帖了,每个人分点。换了表结构