2016-09-19 12 views
1

各テーブルに合計レコードを取得してビューテーブルに格納する方法はありますか?私の現在のクエリは、出力iが行の各合計レコードを指定した別の列を追加することはできません。このクエリで複数テーブルの合計レコードをビューテーブル(mysql)として取得

total_records 
1 
2 
1 

問題である

CREATE VIEW view_summary AS 
SELECT COUNT(*) as total_records FROM users WHERE role_id = 2 
UNION ALL 
(SELECT COUNT(*) FROM users WHERE role_id = 1) 
UNION ALL 
(SELECT COUNT(*) FROM problems) 

です。私の目標出力がある

table_name | total_records 
clients | 1 
admins  | 2 
problems | 1 

おかげ

答えて

1

余分な列を追加することから除きtable name

CREATE VIEW view_summary AS 
SELECT 'cleints' AS table_name,COUNT(*) as total_records FROM users WHERE role_id = 2 
UNION ALL 
(SELECT 'admins',COUNT(*) FROM users WHERE role_id = 1) 
UNION ALL 
(SELECT 'problems',COUNT(*) FROM problems) 
+0

ありがとう、それは動作します – Cris

1

は、あなたが1に最初の二つの選択をマージすることができますとして別の列を追加します。

CREATE VIEW view_summary AS 
(SELECT CASE WHEN role_id = 2 THEN 'clients' ELSE 'admins' END as table_name, 
     COUNT(*) as total_records FROM users WHERE role_id in (1,2) 
GROUP BY CASE WHEN role_id = 2 THEN 'clients' ELSE 'admins' END 

UNION ALL 

SELECT 'problems',COUNT(*) FROM problems) 
関連する問題