如何创建 MySQL 视图

How to create a MySQL view

我有 MySQL 次访问 table 作为

visit_date        client_id
2019-01-01 08-00-00 1
2019-01-01 11-00-00 2

work_hours table 作为

hour    name
8        '08-00'
9        '09-00'
...
18        '18-00'

和tables 客户作为

  client_id client_name
  1           aaa
  2           bbb 
  3           ccc

如何创建视图获取数据?

client_id   hour_name    count
1        '08-00'    1
1        '09-00'    0   
.....
1        '18-00'    0
2        '08-00'    0
2        '09-00'    0
2        '10-00'    0
2        '11-00'    1
2        '12-00'    0
.....
2        '18-00'    0
3        '08-00'    0
3        '09-00'    0
.....    all zero
3        '18-00'    0
SELECT c.client_id,
       wh.hour_name,

  (SELECT count(1)
   FROM visits
   WHERE hour(visit_date) = wh.hour
     AND client_id=c.client_id) AS chcount
FROM work_hours wh,
     clients c;

试试这个:

SELECT c.client_id, w.hour_name,
    (SELECT COUNT(1) 
    FROM visits v
    WHERE v.client_id = c.client_id
    AND HOUR(v.visit_date) = w.hour) as tot_visit
FROM clients c
CROSS JOIN work_hours w
ORDER BY c.client_id, w.hour_name

SQL Fiddle