0

我的 PostgreSQL 数据库中有 3 个表:

menu(id_menu,parent_id,name_uri,uri)
type_role(id_role,name_role)
menutyperole(id_menu,id_role)

在我的表中type_role,我有以下数据(管理员和技术员),表中menu存在许多链接多级来访问另一方,并且该表menutyperole是与其他表的连接。我需要一个查询来提取menu没有分配技术人员的数据(type_role表)。我不知道我是否需要什么条件或其他什么?

SELECT * 
FROM menutyperole 
     INNER JOIN type_role ON menutyperole.id_role = type_role.id_role 
     RIGHT JOIN menu ON  menu.id_menu = menutyperole.id_menu 
WHERE menu.id_parent != 0
4

2 回答 2

0

从中获取menutype_role分配行的一种方法(多种方法):

SELECT m.* 
FROM   menu m
LEFT   JOIN menutyperole mr USING (id_menu)
WHERE  m.id_parent <> 0
AND    mr.id_menu IS NULL;

更多的:

于 2015-04-04T04:53:42.550 回答
0

我解决了这个问题...这是

SELECT * FROM menu INNER JOIN type_role ON type_role.id_role NOT IN(SELECT menutyperole.id_menu FROM menutyperole) LEFT JOIN menutyperole ON menu.id_menu = menutyperole.id_menu WHERE menu.id_parent != 0 AND menutyperole.id_menu IS NULL OR menutyperole.id_role != 1

于 2015-04-04T17:28:08.767 回答