2017-01-20 7 views
-3

PostgreSQLどのように?以下の表を考えると

\d users 
            Table "public.users" 
     Column  |   Type    |    Modifiers 
--------------------+-----------------------------+---------------------------------------- 
id     | integer      | not null 
email    | character varying   | not null default ''::character varying 
encrypted_password | character varying   | not null default ''::character varying 
created_at   | timestamp without time zone | 
address_id   | integer      | 

\d address 
      Table "public.address" 
    Column |  Type  | Modifiers 
----------+-------------------+----------- 
id  | integer   | not null 
street | character varying | 
city  | character varying | 
province | character varying | 
zip  | character varying | 
country | character varying | 
  1. はXXXXに住んでいるすべてのユーザーを選択するには、いくつかのSQLを書きますか?
  2. 3か月以上経過して作成されたユーザーへのクエリのスコープが最新のものから順に表示されますか?
  3. このクエリのパフォーマンスを向上させるインデックスは何ですか?
+1

「XXXXに住んでいる人」を確認しますかチェックしますか特定の単一の列、例えば。 'city'、またはアドレス列のグループをチェックしますか? –

+0

特定の単一列(例:シティ。 –

+1

最小、完全、および検証可能な例を提供してください:https://stackoverflow.com/help/mcve –

答えて

0

まずクエリ:

select u.id, u.email 
from users u 
inner join address a 
    on u.address_id = a.id 
where a.city = 'XXXX' 

2番目のクエリ:あなたが特定の都市に住んでいるユーザを選択したいと仮定し

select u.id, u.email 
from users u 
inner join address a 
    on u.address_id = a.id 
where a.city = 'XXXX' AND 
     u.created_at < NOW() - interval '3 months' 
order by u.created_at desc 
0

、「特定の国では「アディスアベバ」を言うことができますエチオピア "

SELECT * FROM "users" AS u JOIN "address" AS a ON a.id = u.address_id WHERE a.city = 'Addis Ababa' AND a.country = 'Ethiopia' AND u.created_at < CURRENT_DATE - INTERVAL '3 months' ORDER BY u.created_at DESC; 
+0

ありがとうございました... –

+0

ようこそ、あなたの問題を解決したら答えを受け入れることができます。 – zola

+0

このクエリのパフォーマンスを向上させるインデックスは何ですか? –

関連する問題