#php #codeigniter #mysqli
#php #codeigniter #mysqli
Вопрос:
Мне действительно нужна помощь и просвещение здесь 🙂
У меня есть 3 представления:
1st_view «vtabulasi_capaianbantu_fix»:
SELECT
`a`.`tblpok_tahun` AS `tblpok_tahun`,
`a`.`refsubunit_id` AS `refsubunit_id`,
`a`.`tblpok_kodesubunit` AS `tblpok_kodesubunit`,
`a`.`tblpok_kodeunit` AS `tblpok_kodeunit`,
IF (
(`a`.`tblpok_targetkeu12` > 0),
`a`.`tblpok_targetkeu12`,
IF (
(`a`.`tblpok_targetkeu11` > 0),
`a`.`tblpok_targetkeu11`,
IF (
(`a`.`tblpok_targetkeu10` > 0),
`a`.`tblpok_targetkeu10`,
IF (
(`a`.`tblpok_targetkeu09` > 0),
`a`.`tblpok_targetkeu09`,
IF (
(`a`.`tblpok_targetkeu08` > 0),
`a`.`tblpok_targetkeu08`,
IF (
(`a`.`tblpok_targetkeu07` > 0),
`a`.`tblpok_targetkeu07`,
IF (
(`a`.`tblpok_targetkeu06` > 0),
`a`.`tblpok_targetkeu06`,
IF (
(`a`.`tblpok_targetkeu05` > 0),
`a`.`tblpok_targetkeu05`,
IF (
(`a`.`tblpok_targetkeu04` > 0),
`a`.`tblpok_targetkeu04`,
IF (
(`a`.`tblpok_targetkeu03` > 0),
`a`.`tblpok_targetkeu03`,
IF (
(`a`.`tblpok_targetkeu02` > 0),
`a`.`tblpok_targetkeu02`,
IF (
(`a`.`tblpok_targetkeu01` > 0),
`a`.`tblpok_targetkeu01`,
0
)
)
)
)
)
)
)
)
)
)
)
) AS `tblpok_targetkeu`,
IF (
(
`a`.`tblpok_targetfisik12` > 0
),
`a`.`tblpok_targetfisik12`,
IF (
(
`a`.`tblpok_targetfisik11` > 0
),
`a`.`tblpok_targetfisik11`,
IF (
(
`a`.`tblpok_targetfisik10` > 0
),
`a`.`tblpok_targetfisik10`,
IF (
(
`a`.`tblpok_targetfisik09` > 0
),
`a`.`tblpok_targetfisik09`,
IF (
(
`a`.`tblpok_targetfisik08` > 0
),
`a`.`tblpok_targetfisik08`,
IF (
(
`a`.`tblpok_targetfisik07` > 0
),
`a`.`tblpok_targetfisik07`,
IF (
(
`a`.`tblpok_targetfisik06` > 0
),
`a`.`tblpok_targetfisik06`,
IF (
(
`a`.`tblpok_targetfisik05` > 0
),
`a`.`tblpok_targetfisik05`,
IF (
(
`a`.`tblpok_targetfisik04` > 0
),
`a`.`tblpok_targetfisik04`,
IF (
(
`a`.`tblpok_targetfisik03` > 0
),
`a`.`tblpok_targetfisik03`,
IF (
(
`a`.`tblpok_targetfisik02` > 0
),
`a`.`tblpok_targetfisik02`,
IF (
(
`a`.`tblpok_targetfisik01` > 0
),
`a`.`tblpok_targetfisik01`,
0
)
)
)
)
)
)
)
)
)
)
)
) AS `tblpok_targetfisik`,
IF (
(
`a`.`tblpok_realisasikeu12` > 0
),
`a`.`tblpok_realisasikeu12`,
IF (
(
`a`.`tblpok_realisasikeu11` > 0
),
`a`.`tblpok_realisasikeu11`,
IF (
(
`a`.`tblpok_realisasikeu10` > 0
),
`a`.`tblpok_realisasikeu10`,
IF (
(
`a`.`tblpok_realisasikeu09` > 0
),
`a`.`tblpok_realisasikeu09`,
IF (
(
`a`.`tblpok_realisasikeu08` > 0
),
`a`.`tblpok_realisasikeu08`,
IF (
(
`a`.`tblpok_realisasikeu07` > 0
),
`a`.`tblpok_realisasikeu07`,
IF (
(
`a`.`tblpok_realisasikeu06` > 0
),
`a`.`tblpok_realisasikeu06`,
IF (
(
`a`.`tblpok_realisasikeu05` > 0
),
`a`.`tblpok_realisasikeu05`,
IF (
(
`a`.`tblpok_realisasikeu04` > 0
),
`a`.`tblpok_realisasikeu04`,
IF (
(
`a`.`tblpok_realisasikeu03` > 0
),
`a`.`tblpok_realisasikeu03`,
IF (
(
`a`.`tblpok_realisasikeu02` > 0
),
`a`.`tblpok_realisasikeu02`,
IF (
(
`a`.`tblpok_realisasikeu01` > 0
),
`a`.`tblpok_realisasikeu01`,
0
)
)
)
)
)
)
)
)
)
)
)
) AS `tblpok_realisasikeu`,
IF (
(
`a`.`tblpok_realisasifisik12` > 0
),
`a`.`tblpok_realisasifisik12`,
IF (
(
`a`.`tblpok_realisasifisik11` > 0
),
`a`.`tblpok_realisasifisik11`,
IF (
(
`a`.`tblpok_realisasifisik10` > 0
),
`a`.`tblpok_realisasifisik10`,
IF (
(
`a`.`tblpok_realisasifisik09` > 0
),
`a`.`tblpok_realisasifisik09`,
IF (
(
`a`.`tblpok_realisasifisik08` > 0
),
`a`.`tblpok_realisasifisik08`,
IF (
(
`a`.`tblpok_realisasifisik07` > 0
),
`a`.`tblpok_realisasifisik07`,
IF (
(
`a`.`tblpok_realisasifisik06` > 0
),
`a`.`tblpok_realisasifisik06`,
IF (
(
`a`.`tblpok_realisasifisik05` > 0
),
`a`.`tblpok_realisasifisik05`,
IF (
(
`a`.`tblpok_realisasifisik04` > 0
),
`a`.`tblpok_realisasifisik04`,
IF (
(
`a`.`tblpok_realisasifisik03` > 0
),
`a`.`tblpok_realisasifisik03`,
IF (
(
`a`.`tblpok_realisasifisik02` > 0
),
`a`.`tblpok_realisasifisik02`,
IF (
(
`a`.`tblpok_realisasifisik01` > 0
),
`a`.`tblpok_realisasifisik01`,
0
)
)
)
)
)
)
)
)
)
)
)
) AS `tblpok_realisasifisik`,
IF (
(
`a`.`tblpok_realisasikeunominal12` > 0
),
`a`.`tblpok_realisasikeunominal12`,
IF (
(
`a`.`tblpok_realisasikeunominal11` > 0
),
`a`.`tblpok_realisasikeunominal11`,
IF (
(
`a`.`tblpok_realisasikeunominal10` > 0
),
`a`.`tblpok_realisasikeunominal10`,
IF (
(
`a`.`tblpok_realisasikeunominal09` > 0
),
`a`.`tblpok_realisasikeunominal09`,
IF (
(
`a`.`tblpok_realisasikeunominal08` > 0
),
`a`.`tblpok_realisasikeunominal08`,
IF (
(
`a`.`tblpok_realisasikeunominal07` > 0
),
`a`.`tblpok_realisasikeunominal07`,
IF (
(
`a`.`tblpok_realisasikeunominal06` > 0
),
`a`.`tblpok_realisasikeunominal06`,
IF (
(
`a`.`tblpok_realisasikeunominal05` > 0
),
`a`.`tblpok_realisasikeunominal05`,
IF (
(
`a`.`tblpok_realisasikeunominal04` > 0
),
`a`.`tblpok_realisasikeunominal04`,
IF (
(
`a`.`tblpok_realisasikeunominal03` > 0
),
`a`.`tblpok_realisasikeunominal03`,
IF (
(
`a`.`tblpok_realisasikeunominal02` > 0
),
`a`.`tblpok_realisasikeunominal02`,
IF (
(
`a`.`tblpok_realisasikeunominal01` > 0
),
`a`.`tblpok_realisasikeunominal01`,
0
)
)
)
)
)
)
)
)
)
)
)
) AS `tblpok_realisasikeunominal`,
`b`.`refsubunit_nama` AS `tblpok_uraian`
FROM
(
`vtblpok` `a`
JOIN `refsubunit` `b` ON (
(
`b`.`refsubunit_id` = `a`.`refsubunit_id`
)
)
)
WHERE
(
`a`.`tblpok_statusentry` = 'entryTargetRealisasi'
)
2nd_view «vtabulasi_capaianbantu»:
SELECT
`a`.`tblpok_tahun` AS `tblpok_tahun`,
`a`.`refsubunit_id` AS `refsubunit_id`,
`a`.`tblpok_kodesubunit` AS `tblpok_kodesubunit`,
`a`.`tblpok_kodeunit` AS `tblpok_kodeunit`,
IF (
(`a`.`tblpok_targetkeu` > 100),
100,
`a`.`tblpok_targetkeu`
) AS `tblpok_targetkeu`,
IF (
(
`a`.`tblpok_targetfisik` > 100
),
100,
`a`.`tblpok_targetfisik`
) AS `tblpok_targetfisik`,
IF (
(
`a`.`tblpok_realisasikeu` > 100
),
100,
`a`.`tblpok_realisasikeu`
) AS `tblpok_realisasikeu`,
IF (
(
`a`.`tblpok_realisasifisik` > 100
),
100,
`a`.`tblpok_realisasifisik`
) AS `tblpok_realisasifisik`,
`a`.`tblpok_realisasikeunominal` AS `tblpok_realisasikeunominal`,
`a`.`tblpok_uraian` AS `tblpok_uraian`
FROM
`vtabulasi_capaianbantu_fix` `a`
3rd_view «получить среднее значение и сумму»:
SELECT
`a`.`refsubunit_id` AS `refsubunit_id`,
`a`.`tblpok_kodesubunit` AS `tblpok_kodesubunit`,
`a`.`tblpok_kodeunit` AS `tblpok_kodeunit`,
`a`.`tblpok_uraian` AS `tblpok_namasubunit`,
avg(`a`.`tblpok_realisasikeu`) AS `tblpok_realisasikeu`,
sum(
`a`.`tblpok_realisasikeunominal`
) AS `tblpok_realisasikeunominal`,
(
SELECT
avg(`b`.`tblpok_realisasikeu`)
FROM
`vtabulasi_capaianbantu` `b`
) AS `tblpok_realisasikeu_allskpd`,
(
SELECT
sum(`c`.`tblpok_apbdmurni`)
FROM
`vtabel_tblpok_level2_by_subunitid` `c`
) AS `tblpok_apbdmurni_allskpd`,
(
SELECT
sum(`c`.`tblpok_apbdperubahan`)
FROM
`vtabel_tblpok_level2_by_subunitid` `c`
) AS `tblpok_apbdperubahan_allskpd`,
(
SELECT
sum(
`b`.`tblpok_realisasikeunominal`
)
FROM
`vtabulasi_capaianbantu` `b`
) AS `tblpok_realisasikeunominal_allskpd`,
`c`.`tblpok_apbdmurni` AS `tblpok_apbdmurni`,
`c`.`tblpok_apbdperubahan` AS `tblpok_apbdperubahan`
FROM
(
`vtabulasi_capaianbantu` `a`
JOIN `vtabel_tblpok_level2_by_subunitid` `c` ON (
(
`a`.`refsubunit_id` = `c`.`refsubunit_id`
)
)
)
GROUP BY
`a`.`refsubunit_id`
В настоящее время я уже использовал это представление, которое вызывается из этой модели:
Модель:
$this->db->select("*");
$query = $this->db->get('3rd_view');
return $query->result_array();
Все в порядке. Все прошло хорошо до MVC-> циклы просмотра таблиц.
И теперь проблема заключается в:
- Я не могу изменить запрос представления «предложение where», потому что мне нужно запросить этот фильтр года данных (
a
.tblpok_tahun
) в 1st_view. Есть мнение / решение? - Я не могу управлять 1st_view IF итерацией (от 12 до 1 поля), потому что я не могу передать php var в запрос 1-го просмотра. (Например, если мне нужно отфильтровать данные с месяца 1 по 4, в моей форме php уже есть поле со списком для месяцев, я выбираю 4). Затем мне нужно ограничить вложенные IF только от 1 до 4 гнезд. Как мы это делаем?
- Я боюсь, что при использовании многих комбинированных представлений с большим количеством процессов IF внутри происходит некоторое снижение производительности. (Время загрузки 8 секунд)
- Должен ли я найти другую стратегию запросов? Должен ли он быть сильно закодирован на стороне mysql или php?
Спасибо за ответы.
Комментарии:
1. БОЖЕ. Я около 10 лет в webdev, но я никогда раньше не видел ничего подобного. Используете ли вы
views
запросы as?2. Это то, что я хочу изменить …. любое решение?
3. Используется
controllers
для определения того, какое действие вам нужно выполнить с запросом, вызовите подходящийmodel
для обработки данных и возврата обработанных данныхcontroller
, затем отправьте обработанные данные изcontroller
вview
для рисования чего-либо для пользователя. Это вызываетMVC
4. @George Sazanovich, спасибо за ответ, я уже сделал это, короче говоря, все, что я прошу, в основном связано с подходом к стратегии модели… не mvc. Я использую контроллер для координации всех запросов. моя проблема в модели.