【问题标题】:Query multiple tables in PostgreSQL (LEFT or RIGHT and other)查询 PostgreSQL 中的多个表(LEFT 或 RIGHT 等)
【发布时间】:2015-04-04 02:45:38
【问题描述】:

我的 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

【问题讨论】:

  • 我要求您提供每个表的示例数据以及问题中的预期输出
  • parent_idid_parent?

标签: sql postgresql join menu privilege


【解决方案1】:

一种方式(多种方式)从menu 获取没有分配type_role 的行:

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

更多:

【讨论】:

    【解决方案2】:

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

    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-08-25
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 2021-01-28
      • 2013-03-14
      • 1970-01-01
      • 2015-06-18
      相关资源
      最近更新 更多