добрый вечер. Я пишу ему, чтобы видеть, могут ли они помогать мне с этой консультацией, которая провела дни не добиваясь необходимого результата.
У меня есть следующая таблица в mysql:
id_servicio -> llave primaria
fecha_servicio -> datetime
id_servicio_estado
id_servicio_estado_entrega
fecha_servicio-> datetime id_empresa
Пример данных:
id_servicio | fecha_servicio | id_servicio_estado | id_servicio_estado_entrega | id_empresa
1, 2005-03-22, 2, 8, 1
1, 2017-03-01, 2, 8, 1
1, 2017-03-18, 2, 7, 1
1, 2017-04-01, 2, 8, 1
1, 2017-10-01, 1, 8, 1
Я нуждаюсь в том, чтобы иметь следующий результат.
fecha_servicio | id_servicio_estado | id_servicio_estado_entrega
marzo , 2, 1
abril , 1, 1
octubre, 0, 1
Консультация должна вручать все услуги соответствующему предприятию =1, где год был = 2017, id_servicio_estado = 2 и id_servicio_estado_entrega = 8, группируемый в месяц через тот же год, будучи результатом, упорядоченным числом месяца через год. Пример январь, февраль, март, и т.д. и т.д.
Идея состоит в том, чтобы видеть, как это query, чтобы после мочь преобразовывать это в codeignater.
Agradezo Ваша помощь по этому поводу
Он старался понимать консультацию, которую ты хочешь реализовать, и я думаю, что объяснено немного плохо мне казаться, когда делать какие-то доказательства на сервере mysql с данными, что posteaste я смог замечать это, что я понял как в результате, который posteaste состоял в том, что ты хочешь выдать услуги предприятия (из-за id_empresa и aГ±o услуга) и потом делать подсчет из-за месяца полей id_servicio_estado = 2 и id_servicio_estado_entrega = 8. Если то, что я понял, правильно, следующая консультация смогла служить тебе помощью.
SELECT
CASE
WHEN tabla.mes_servicio = 1 THEN "ENERO"
WHEN tabla.mes_servicio = 2 THEN "FEBRERO"
WHEN tabla.mes_servicio = 3 THEN "MARZO"
WHEN tabla.mes_servicio = 4 THEN "ABRIL"
WHEN tabla.mes_servicio = 5 THEN "MAYO"
WHEN tabla.mes_servicio = 6 THEN "JUNIO"
WHEN tabla.mes_servicio = 7 THEN "JULIO"
WHEN tabla.mes_servicio = 8 THEN "AGOSTO"
WHEN tabla.mes_servicio = 9 THEN "SEPTIEMBRE"
WHEN tabla.mes_servicio = 10 THEN "OCTUBRE"
WHEN tabla.mes_servicio = 11 THEN "NOVIEMBRE"
WHEN tabla.mes_servicio = 12 THEN "DICIEMBRE"
ELSE "ERROR MES"
END AS 'mes',
SUM(tabla.id_servicio_estado) AS servicioEntrega2,
SUM(tabla.id_servicio_estado_entrega) AS servicioEstadoEntrega8
FROM
(
SELECT MONTH(p.fecha_servicio) AS mes_servicio,
CASE
WHEN p.id_servicio_estado = 2 THEN 1
ELSE 0
END AS 'id_servicio_estado',
CASE
WHEN P.id_servicio_estado_entrega = 8 THEN 1
ELSE 0
END AS 'id_servicio_estado_entrega'
FROM prueba p
WHERE YEAR(p.fecha_servicio) = 2017 AND p.id_empresa = 1
) tabla
GROUP BY tabla.mes_servicio
ORDER BY tabla.mes_servicio ASC
Замечает: Hize доказательство с данными, которое posteaste, utilize таблица так называемое доказательство, чтобы не иметь проблемы на твоем сервере после того, как скроллировать консультацию, только меняет имя таблицы ^_^.
Есть проблема, с которым ты просишь, ты хочешь группировать данные в месяц, но estГЎs понимая, что id_servicio_estado и id_empresa они равны, ты не можешь группировать в месяц и доставать эти данные правильно.
облегчил Тебе query для того, чтобы он подал тебя guГ - в, конечно то, в чем ты нуждаешься, было чем-то сходным:
SELECT
DATE_FORMAT(fecha_servicio,"%M"),
GROUP_CONCAT(id_servicio_estado),
GROUP_CONCAT(id_empresa)
WHERE YEAR(fecha_servicio) = 2017
AND id_servicio_estado = 2
AND id_servicio_estado_entrega = 8
GROUP BY DATE_FORMAT(fecha_servicio,"%M"), MONTH(fecha_servicio)
ORDER BY MONTH(fecha_servicio);