Как создать представление MySQL - PullRequest
2 голосов
/ 25 марта 2019

У меня таблица посещений MySQL как

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

work_hours таблица как

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

и таблицы клиенты как

  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

Ответы [ 2 ]

2 голосов
/ 25 марта 2019

Попробуйте это:

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

0 голосов
/ 25 марта 2019
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;
...