2016-09-24 82 views
1

我有3代表与下面的架构Postgres的SQL - 从表3的数据加入到选择一列

Table1 - plan 
id | count 

Table2 - subscription 
id | plan_id 

Table3 - users 
id | subscription_id 

我不得不选择从那里它与plan.id比赛subscription.plan_id和用户相匹配的计划数.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; 

回答

0

尽量避免implicit SQL为了保留可读性联接,而使用explicit连接(e.g. inner join,left join..)。

一个清洁的方法是如下:

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

+0

你从'是指从plan'? –

+0

是的。 '...从table1,table2,table3 ...,tableN..'是这些表中另一种形式的'CROSS JOIN'。 – 1000111

相关问题