Поскольку это странный вопрос, я не смог найти правильный ответ.Я разрабатываю интранет для моей компании, используя codeigniter.У меня есть синтаксис запроса, который позволяет мне получить все продукты в данный день:
$query = $this->db
->select('
stock_meta.code_company AS product,
stock_meta.company AS company,
stock_meta.factory AS factory,
COUNT(production.product) AS total_product
')
->from('production')
->join('stock_meta', 'production.product = stock_meta.code_local', 'inner')
->where('date BETWEEN ' . $start_date . ' AND ' . $end_date)
->group_by('product')
->order_by('factory')
->get();
, и здесь это синтаксис MySQL:
SELECT
stock_meta.code_company AS product,
stock_meta.company AS company,
stock_meta.factory AS total_product
FROM
production
INNER JOIN
stock_meta ON production.product = stock_meta.code_local
WHERE
date BETWEEN 1304208650 AND 1304280234
GROUP BY
product
ORDER BY
factory
Я вызываю этот запрос только один раз.
Я получаю такой результат:
| product | company | factory | total_product |
+----------+----------+----------+----------------+
| 231234 | A | Fac1 | 475 |
| 245214 | A | Fac2 | 246 |
+----------+----------+----------+----------------+
И он прекрасно работает.Но мне нужно получить производство между рабочими сменами.Есть смены деревьев: с 00:00 до 08:00, с 08:00 до 16:00, с 16:00 до 24:00.Как я могу получить рабочие смены для каждого продукта?
Я имею в виду, что мне нужно получить такой результат:
| product | company | factory | shift1 | shift2 | shift3 | total_product |
+----------+----------+----------+---------+---------+---------+----------------+
| 231234 | A | Fac1 | 100 | 200 | 175 | 475 |
| 245214 | A | Fac2 | 46 | 50 | 150 | 246 |
| 500231 | B | aFaca1 | 46 | 50 | 150 | 246 |
+----------+----------+----------+---------+---------+---------+----------------+
А мои Таблицы вот так:
CREATE TABLE IF NOT EXISTS `production` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`factory` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL,
`date` int(11) DEFAULT NULL,
`operator` int(11) DEFAULT NULL,
`product` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ;
CREATE TABLE IF NOT EXISTS `stock_meta` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`code_local` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL,
`code_company` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
`company` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL,
`factory` varchar(10) COLLATE utf8_unicode_ci NOT NULL,
`status` tinyint(4) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=242 ;
Так.Есть идеи?
Редактировать: Я забыл упомянуть об этом.Я использую метку времени Unix.
Спасибо за совет.
Best Redgards.
Gokhan