2017-06-12 3 views
2

私は必要な結果を得るために問題があります:/これらは私の錠剤です。 Postgresqlの期待どおりの結果セットを得るためにどのようなSQLクエリを実行する必要がありますか?

このクエリを使用して
 table: logins        table: users 
+------------------------+     +------------------+ 
| iduser | date  |     | iduser | name | 
|------------------------|     |------------------| 
|  1  |'2017-06-06'|     | 1 | Joe  | 
|------------------------|     |------------------| 
|  1  |'2017-06-06'|     | 2 | Jane |  
|------------------------|     |------------------| 
|  2  |'2017-06-07'|     | 3 | Mary | 
|------------------------|     +------------------+ 
|  3  |'2017-06-07'| 
|------------------------| 
|  3  |'2017-06-07'| 
|------------------------| 
|  3  |'2017-06-07'| 
+------------------------+ 

イム上:

SELECT name, date, count(*) FROM logins l 
LEFT JOIN users u 
ON u.iduser= l.iduser 
GROUP BY 
u.name,l.date 
ORDER BY 
l.date 

これも私が得たもの:

+-----------------------------------+ 
| name | date  | count | 
|-----------------------------------| 
| Joe  | '2017-06-06' | 2 | 
|-----------------------------------| 
| Jane  | '2017-06-07' | 1 | 
|-----------------------------------| 
| Mary  | '2017-06-07' | 3 | 
+-----------------------------------+ 

しかし、私が本当に結果からその本を取得する必要があります:

+-----------------------------------+ 
| name | date  | count | 
|-----------------------------------| 
| Joe  | '2017-06-06' | 2 | 
|-----------------------------------| 
| Jane  | '2017-06-06' | 0 | 
|-----------------------------------| 
| Mary  | '2017-06-06' | 0 | 
|-----------------------------------| 
| Joe  | '2017-06-07' | 0 | 
|-----------------------------------| 
| Jane  | '2017-06-07' | 1 | 
|-----------------------------------| 
| Mary  | '2017-06-07' | 3 | 
+-----------------------------------+ 

どうすればよいですか?助けてください!!!どうもありがとう! ^^ SQL Serverで

+0

使用しているDBMSにタグを付けてください – TheGameiswar

+0

私はPostgreSQLを使用しています – onBassTaiji

答えて

3

&のPostgres:

dateusersのすべての組み合わせを取得し、left joinloginへ:

select 
    d.date 
    , u.name 
    , count(l.iduser) as login_count 
from (select distinct date from logins) d 
    cross join users u 
    left join logins l 
    on l.iduser=u.iduser 
    and l.date=d.date 
group by d.date, u.name 

rextesterデモ(SQLサーバー):http://rextester.com/THJE85313

rextesterデモ(ポストグル):http://rextester.com/BNHE97192

返信:

+---------------------+------+-------------+ 
|  date   | name | login_count | 
+---------------------+------+-------------+ 
| 2017-06-06 00:00:00 | Jane |   0 | 
| 2017-06-07 00:00:00 | Jane |   1 | 
| 2017-06-06 00:00:00 | Joe |   2 | 
| 2017-06-07 00:00:00 | Joe |   0 | 
| 2017-06-06 00:00:00 | Mary |   0 | 
| 2017-06-07 00:00:00 | Mary |   3 | 
+---------------------+------+-------------+ 
関連する問題