как получить значение из результатов расчета другого столбца в той же таблице - PullRequest
0 голосов
/ 19 октября 2019

Я пытался извлечь значение из расчета нескольких столбцов,

в этом случае попробуйте применить формулу "(a + (a / 25 * b)) - c" для обработки с использованием sqlязык, который я буду использовать в codeigniter.

Я также пытался использовать "производную таблицу", такую ​​как SELECT .... FROM (SELECT... FROM...) AS dt, но у меня возникли трудности при применении ее к моему случаю в codeigniter

private function _get_datatables_query(){
            $intvl = '2';
            $tgl_stok = '2019-09-30';

            $this->db->SELECT('p.hso, p.no_part, p.nama_part, jml, sp.oh, sum(p.qty)+(sum(p.qty)/25*$intvl)-sp.oh as suggest');
            $this->db->FROM('penjualan p');
            $this->db->JOIN('stok_part sp', 'sp.no_part = p.no_part', 'left');
            $this->db->WHERE("sp.tgl = '$tgl_stok' AND p.tgl BETWEEN DATE_SUB('$tgl_stok', INTERVAL $intvl DAY) AND '$tgl_stok'");
            $this->db->GROUP_BY('p.no_part');
            //...other code...
        }

Я хочустолбец с псевдонимом suggest в коде для получения вычисленного значения нескольких других столбцов

Я знаю, что написание созданного мной кода не соответствует правилам написания SQL, я пробовал несколько способов, ноэто не работает. Я очень благодарен за вашу помощь

Ответы [ 2 ]

0 голосов
/ 19 октября 2019

Я раскрыл это дело.

проблема в моем запросе:

$this->db->SELECT('p.hso, p.no_part, p.nama_part, jml, sp.oh, sum(p.qty)+(sum(p.qty)/25*$intvl)-sp.oh as suggest');

и замените его на

$this->db->SELECT("p.hso, p.no_part, p.nama_part, sum(p.qty) as jml, sp.oh, sum(p.qty)+(sum(p.qty)/25*'$intvl')-sp.oh as s_po");

моей ошибкой было написание кавычекв запросе

0 голосов
/ 19 октября 2019

Вместо var вы должны использовать параметр таким образом, вы можете легко передать нужное вам значение и избежать sqlinjection, например:

        $sql = "SELECT p.hso, p.no_part, p.nama_part, jml, sp.oh, sum(p.qty)+(sum(p.qty)/25*?)-sp.oh as suggest
                FROM enjualan p 
                LEFT JOIN stok_part sp ON  sp.no_part = p.no_part
                WHERE sp.tgl = ?  AND p.tgl BETWEEN DATE_SUB(?, INTERVAL ? DAY) AND ?
                GROUP BY p.no_part";

        $this->db->query($sql, array($intval,$tgl_stok, $tgl_stok, $intvl, tgl_stok ));

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...