2016-09-24 8 views
1

を選択するために、3テーブルからデータを結合、私は次のスキーマPostgresのSQL - 1列

Table1 - plan 
id | count 

Table2 - subscription 
id | plan_id 

Table3 - users 
id | subscription_id 

との3つのテーブルを持って、私はそのplan.idがsubscription.plan_id一致し、ユーザーと一致した計画からのカウントを選択する必要があります.subscription_idはsubscription.idと一致し、users.id = '5'

ここではどのように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' FROM 'から意味ですか? –

+0

はい。 '... FROM table1、table2、table3 ...、tableN..'は、これらのテーブルの間の' CROSS JOIN'の別の形式です。 – 1000111