2015-05-02 2 views
0

У меня возникли проблемы с выяснением путей решения, но я вообще не могу ответить. Это моя проблема.count ocurrences over each day in mysql

У меня есть таблица MySql, как следующее:

cust_id,date_removed,station_removed,date_arrived,station_arrived 
6,"2010-02-02 13:57:00",56,"2010-02-02 13:58:00",77 
6,"2010-02-02 15:12:00",66,"2010-02-02 15:12:00",56 
30,"2010-02-05 11:36:00",32,"2010-02-05 11:37:00",14 
30,"2010-02-05 11:37:00",14,"2010-02-05 11:37:00",20 
30,"2010-02-05 12:41:00",85,"2010-02-05 12:43:00",85 
30,"2010-02-05 12:44:00",85,"2010-02-05 12:46:00",85 
30,"2010-02-06 13:15:00",8,"2010-02-06 13:17:00",20 
30,"2010-02-06 13:18:00",23,"2010-02-06 13:19:00",23 
30,"2010-02-06 13:20:00",32,"2010-02-06 13:21:00",39 
30,"2010-02-06 13:21:00",11,"2010-02-06 13:21:00",23 
30,"2010-02-06 13:21:00",76,"2010-02-06 13:22:00",32 

которых соответствующие типы данных в каждом поле является следующее: cust_id: VARCHAR() date_removed: DateTime station_removed: Int date_arrived: DateTime station_arrived: int

Далее меня попросили сделать запрос, чтобы получить счет по каждой станции, используемой в течение дня, чтобы получить таблицу, подобную этой:

station 2010-02-02 2010-02-05 2010-02-06 
56   2    0   0 
66   1    0   0 
32   0    1   2 
14   0    2   0 
85   0    2   0 
8    0    0   1 
23   0    0   2 
11   0    0   1 
76   0    0   1 
77   1    0   0 
20   0    1   1 
39   0    0   1 

где столбцы - это дни, а строки - каждая станция. Я тоже не очень хороший пользователь mySQL.

Может ли кто-нибудь помочь мне на этом ?.

Спасибо заранее

+0

Как правило, вопросы отображения данных лучше всего обрабатываются на уровне приложений (например, простой цикл PHP) - при условии, что доступно. – Strawberry

ответ

0

использовать этот запрос:

select stations.name as station, 

(select count(*) from table where date(date_arrived)='2010-02-02' and (station_removed=stations.name or station_arrived=stations.name)) as '2010-02-02' 
(select count(*) from table where date(date_arrived)='2010-02-05' and (station_removed=stations.name or station_arrived=stations.name)) as '2010-02-05' 
(select count(*) from table where date(date_arrived)='2010-02-06' and (station_removed=stations.name or station_arrived=stations.name)) as '2010-02-06' 

from 

(select station_removed as name from table 
    union 
select station_arrived from table) stations ; 
+0

Это было прекрасно! Теперь у меня есть только последний вопрос. Если у меня на моем столе большое количество дат. есть ли возможность поместить все из них в один запрос? спасибо :) – ghost

+0

@ user1984838, глядя на ваш набор данных, вы должны создать запрос выбора для каждого вида даты в своем предложении выбора родителя. –