У вас на самом деле есть куча проблем в вашем коде. Если я что-то упустил, ваши запросы излишни:
"SELECT tbltc.BILLED FROM tbltc
WHERE tbltc.PN = $pn AND tbltc.Y = $taxyear AND tbltc.SCENARIO = $scenario
GROUP BY BILLED"
"SELECT tbltc.BILLED, tbltc.TC, tbltc.CAT FROM tbltc
WHERE tbltc.PN = $pn AND tbltc.Y = $taxyear AND tbltc.SCENARIO = $scenario
AND tbltc.BILLED = '".$bdrow->BILLED."'
GROUP BY TC"
Вы выбираете данные из той же таблицы на основе одного и того же сценария $ pn, $ taxyear и $. Получив первый набор результатов, вы перебираете его, чтобы передать BILLED во второй запрос. Это совершенно не нужно и может быть достигнуто только с помощью второго запроса, удалив $ bdrow-> BILLED
"SELECT tbltc.BILLED, tbltc.TC, tbltc.CAT FROM tbltc
WHERE tbltc.PN = $pn AND tbltc.Y = $taxyear AND tbltc.SCENARIO = $scenario
GROUP BY TC"
Во-вторых, у вас есть GROUP BY в обоих запросах, но у вас нет функций count (), sum () или других агрегатных функций. Чего пытаются достичь с помощью GROUP BY? Итак, давайте возьмем это сейчас ради упражнений. Теперь у вас есть один запрос с декартовым результатом. Вот код
$tcbd = $this->db->query("SELECT tbltc.BILLED, tbltc.TC, tbltc.CAT FROM tbltc WHERE tbltc.PN = $pn AND tbltc.Y = $taxyear AND tbltc.SCENARIO = $scenario");
$data = array();
foreach ($tcbd->result() as $row) {
$data[$row->BILLED][] = $row->TC;
}
даст вам
Array
(
[2011-11-18 00:00:00] => Array
(
[0] => C,
[1] => I,
[2] => S
),
[2011-11-22 00:00:00] => Array
(
[0] => C,
[1] => S
)
)
ключевые позиции могут отличаться - я просто набрал результаты на основе ваших данных