Объединить представления mysql со столбцом IF

#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-> циклы просмотра таблиц.
И теперь проблема заключается в:

  1. Я не могу изменить запрос представления «предложение where», потому что мне нужно запросить этот фильтр года данных ( a . tblpok_tahun ) в 1st_view. Есть мнение / решение?
  2. Я не могу управлять 1st_view IF итерацией (от 12 до 1 поля), потому что я не могу передать php var в запрос 1-го просмотра. (Например, если мне нужно отфильтровать данные с месяца 1 по 4, в моей форме php уже есть поле со списком для месяцев, я выбираю 4). Затем мне нужно ограничить вложенные IF только от 1 до 4 гнезд. Как мы это делаем?
  3. Я боюсь, что при использовании многих комбинированных представлений с большим количеством процессов IF внутри происходит некоторое снижение производительности. (Время загрузки 8 секунд)
  4. Должен ли я найти другую стратегию запросов? Должен ли он быть сильно закодирован на стороне mysql или php?

Спасибо за ответы.

Комментарии:

1. БОЖЕ. Я около 10 лет в webdev, но я никогда раньше не видел ничего подобного. Используете ли вы views запросы as?

2. Это то, что я хочу изменить …. любое решение?

3. Используется controllers для определения того, какое действие вам нужно выполнить с запросом, вызовите подходящий model для обработки данных и возврата обработанных данных controller , затем отправьте обработанные данные из controller в view для рисования чего-либо для пользователя. Это вызывает MVC

4. @George Sazanovich, спасибо за ответ, я уже сделал это, короче говоря, все, что я прошу, в основном связано с подходом к стратегии модели… не mvc. Я использую контроллер для координации всех запросов. моя проблема в модели.