postgresql - Postgres SQL - 连接来自 3 个表的数据以选择一列

标签 postgresql

我有 3 个具有以下架构的表

Table1 - plan
id | count

Table2 - subscription
id | plan_id

Table3 - users
id | subscription_id 

我必须从 plan.id 与 subscription.plan_id 匹配且 users.subscription_id 与 subscription.id 匹配且 users.id = '5' 匹配的计划中选择计数

如何在这里使用 JOIN?

我试过不使用 JOIN,如下所示:

SELECT count 
    FROM users, subscription, plan 
    WHERE users.id = '5' and users.subscription_id = subscription.id and subscription.plan_id = plan.id;

最佳答案

尽量避免隐式 sql 连接,而是使用显式 连接(例如内连接、左连接..)以保持可读性。

更简洁的方法如下:

SELECT
    count
FROM
    users
INNER JOIN  subscription ON users.subscription_id = subscription.id
INNER JOIN  plan ON subscription.plan_id = plan.id
WHERE   users.id = '5'

Explicit vs implicit SQL joins

关于postgresql - Postgres SQL - 连接来自 3 个表的数据以选择一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39673811/

相关文章:

sql - postgreSQL TO_NUMBER 函数因附加 WHERE 限制而失败?

postgresql - 如何使用 PgAgent 在 PostgreSql 中创建 sScheduler 作业

python - 在 MacOS 10.9.5 上安装 Psycopg2 时出错

postgresql - 使用 Homebrew 软件安装 postgresql 9.5.3

database - postgres中区间数据类型的插入语法

sql - 获取 Postgres 表中列最常见的星期几

sql - 将行取消嵌套到多个 json 对象中

sql - Postgresql COPY命令导出数据到csv : Can we achieve double quotes for strings in csv's?

postgresql - 在 Elixir 中使用 Ecto,这无法评估现有索引的唯一对比

postgresql - COPY FROM 可以容忍地使用错误的 CSV 吗?