【问题标题】:Postgresql query involving three tables涉及三个表的PostgreSQL查询
【发布时间】:2010-07-23 13:15:50
【问题描述】:

我有三张桌子,比如说:

(1) 名称:组

列:gid、组名

(2) 名称:个人资料

列:profileid、profname

(3) 名称:GroupsProfiles

Columns: gid, profileid - 对应于前面表格中的列

现在,假设我有一个 profileid 数组,我想构造一个查询,在 GroupsProfiles 中找到相应的 gid,然后从中找到 Groups 中的相应组名。

我一直在玩连接和事情,但没有完全得到我想要的。有什么想法吗?

【问题讨论】:

  • 你能展示一下你已经拥有的吗?

标签: postgresql


【解决方案1】:

使用加入(将 your_profile_id 替换为您关心的个人资料 ID):

SELECT p.profileid
     , g.gid
     , g.GroupName
  FROM Groups g
     , Profiles p
     , GroupsProfiles gp
 WHERE g.gid = gp.gid
   AND p.profileid = gp.profileid
   AND p.profileid = your_profile_id

您将为每个配置文件 ID 运行此查询。如果您想获取所有配置文件或配置文件子集的信息,您可以删除 your_profile_id 上的条件,或者如果您知道需要哪些条件,也可以使用 IN 子句,例如

SELECT g.gid
     , g.GroupName
  FROM Groups g
     , Profiles p
     , GroupsProfiles gp
 WHERE g.gid = gp.gid
   AND p.profileid = gp.profileid
   AND p.profileid IN (profile_id_1, profile_id_2, ... ,profile_id_N)

【讨论】:

    猜你喜欢
    • 2012-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    相关资源
    最近更新 更多