2016-09-24 81 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

相關問題