2016-05-03 3 views
1

場合でも:戻り、デフォルトのデータMySQLを使用してMySQLのテーブルには、レコード

クエリ結果がチャート

表のためのWebクライアントで使用されることはありません。tblActivity

+----------------------------------------------------------+ 
|id |Activityname |state [state is boolean will have 1 or 0] 
+----------------------------------------------------------+ 
| 1 | activity1 | 1          | 
| 1 | activity1 | 0          | 
| 2 | activity2 | 1          |   
| 2 | activity2 | 0          | 
| 3 | activity3 | 0          | 
| 1 | activity1 | 1          | 
| 2 | activity2 | 0          | 
| 4 | activity4 | 1          | 
+----------------------------------------------------------+ 

を選択クエリ

select id, Activityname, state, count(*) as activitycount 
from tblActivity 
group by id,state 

電流出力

+--------------------------------------+ 
|id |Activityname |state |activitycount| 
+--------------------------------------+ 
|1 |activity1 | 1 | 2   | 
|1 |activity1 | 0 | 1   | 
|2 |activity2 | 1 | 1   | 
|3 |activity2 | 0 | 2   | 
|3 |activity3 | 0 | 1   | 
+--------------------------------------+ 

予想される出力

+--------------------------------------+ 
|id |Activityname |state |activitycount| 
+--------------------------------------+ 
|1 |activity1 | 1 | 2   | 
|1 |activity1 | 0 | 1   | 
|2 |activity2 | 1 | 1   | 
|2 |activity2 | 0 | 2   | 
|3 |activity3 | 1 | 0 [need] | 
|3 |activity3 | 0 | 1   | 
|4 |activity3 | 1 | 1   | 
|4 |activity3 | 0 | 0 [need] | 
+--------------------------------------+ 

ので、私は特定の活動

の属性 状態ためのデータが存在しないにもかかわらず、行を返すようにしたいです

私はIFNULL、COLEASEなどで試しましたが、最適な解決策を見つけることができません。

+0

あなたが存在しない行を作成するために期待しますか? – Blip

+0

@Blipテーブルから取得するのではなく、結果セットが存在しない場合は手動で追加したいと考えています。 –

+2

@Blip派生テーブルですか? – sagi

答えて

2

使用可能なすべての状態/ ID /活動を選択することで、派生テーブルを「作成」する必要がありますし、あなたのクエリに参加さ左:

SELECT t2.id,t1.state,t2.activityname,count(s.activityname) as activitycount 
FROM (SELECT distinct t.state FROM tblActivity t) t1 
CROSS JOIN (select distinct s.id,s.activityname FROM tblActivity s) t2 
LEFT OUTER JOIN tblActivity s 
ON(s.state = t1.state and s.activityname = t2.activityname) 
GROUP BY t2.id,t1.state,t2.activityname 
+0

完璧な、期待どおり、非常に最初の試みで雄牛目のように働いた。私の多くの時間を節約しました。 –

関連する問題