Вы должны проанализировать значения из массива $_POST
и построить свой запрос только со столбцами, выбранными пользователем.
Не забудьте проверить, что были введены НЕКОТОРЫЕ значения, иначе вы не выберете ничего, что будетсгенерировать ошибку.Также я не уверен в значениях, которые у вас есть в этих флажках, поэтому я сделал их целыми числами вместо десятичных, чтобы они соответствовали предоставленному вами SQL.
Пример подтверждения того, что пользователь установил хотя бы один флажок -
if(isset($_POST['chk']){
// do the example stuff below and build your query
}else{
// use your existing query string as-is
}
?>
А затем построение запроса, на основе которого были установлены флажки.Используя значения примера массива, как показано в комментарии
<?php
// this would be $_POST['chk'] if the user checked
// those 3 particular checkboxes
$arr=array(7,8,9);
$queryString="SELECT t_name_file.PROCESS_TIME,";
foreach($arr as $conditionValue){
$queryString.="
COUNT(CASE t_transaction.DEFECT_CLASS_ID WHEN ".$conditionValue." THEN t_defect_class.DEFECT_CLASS_NAME END) AS '".$conditionValue."' ,";
}
$queryString=trim($queryString,",");
$queryString.="FROM t_transaction
INNER JOIN t_name_file ON t_transaction.NAMEFILE_ID=t_name_file.NAMEFILE_ID
INNER JOIN t_defect_class ON t_transaction.DEFECT_CLASS_ID=t_defect_class.DEFECT_CLASS_ID
GROUP BY t_transaction.DEFECT_CLASS_ID, t_name_file.PROCESS_TIME ORDER BY t_name_file.PROCESS_TIME";
print("\n\n".$queryString."\n\n");
?>
Генерирует
SELECT t_name_file.PROCESS_TIME,
COUNT(CASE t_transaction.DEFECT_CLASS_ID WHEN 7 THEN t_defect_class.DEFECT_CLASS_NAME END) AS '7' ,
COUNT(CASE t_transaction.DEFECT_CLASS_ID WHEN 8 THEN t_defect_class.DEFECT_CLASS_NAME END) AS '8' ,
COUNT(CASE t_transaction.DEFECT_CLASS_ID WHEN 9 THEN t_defect_class.DEFECT_CLASS_NAME END) AS '9' FROM t_transaction
INNER JOIN t_name_file ON t_transaction.NAMEFILE_ID=t_name_file.NAMEFILE_ID
INNER JOIN t_defect_class ON t_transaction.DEFECT_CLASS_ID=t_defect_class.DEFECT_CLASS_ID
GROUP BY t_transaction.DEFECT_CLASS_ID, t_name_file.PROCESS_TIME ORDER BY t_name_file.PROCESS_TIME
Наконец, после того, как все запросы будут выполнены, я получу твердые возвраты встрока запроса ...