Как вставить мой MySQL Case When Statement в PHP с помощью PDO, чтобы я мог добавить вывод в свою столбчатую диаграмму - PullRequest
0 голосов
/ 30 марта 2019

Я работаю над столбчатой ​​диаграммой и хочу добавить в диаграмму значения моего MySQL Case When Statement. Однако мне нужна помощь для написания оператора в PHP с использованием PDO, чтобы я мог интегрировать его в диаграмму столбцов моего приложения. Как я могу написать оператор Case When в PHP с помощью PDO?

SELECT

COUNT(CASE WHEN tbl_projects.projsector = 'Agriculture' THEN 1 END) AS `AG`,     

COUNT(CASE WHEN tbl_projects.projsector = 'Building Construction' THEN 1 END) AS `BC`,    

COUNT(CASE WHEN tbl_projects.projsector = 'Health' THEN 1 END) AS `HT`,    

COUNT(CASE WHEN tbl_projects.projsector = 'Education' THEN 1 END) AS `ED`,  

COUNT(CASE WHEN tbl_projects.projsector = 'Water Supply' THEN 1 END) AS `WS`,  

COUNT(CASE WHEN tbl_projects.projsector = 'Income Generation' THEN 1 END) AS `IG`,  

COUNT(tbl_projects.projsector) AS 'Total SEctors',  

concat(round(COUNT(CASE WHEN tbl_projects.projsector = 'Agriculture' THEN 1 END)/COUNT(tbl_projects.projsector) * 100 )) AS '% AG', 

concat(round(COUNT(CASE WHEN tbl_projects.projsector = 'Building Construction' THEN 1 END)/COUNT(tbl_projects.projsector) * 100)) AS '% BC',

concat(round(COUNT(CASE WHEN tbl_projects.projsector = 'Health' THEN 1 END)/COUNT(tbl_projects.projsector) * 100)) AS '% HT', concat(round(COUNT(CASE WHEN tbl_projects.projsector = 'Education' THEN 1 END)/COUNT(tbl_projects.projsector) * 100 )) AS '% ED', 

concat(round(COUNT(CASE WHEN tbl_projects.projsector = 'Water Supply' THEN 1 END)/COUNT(tbl_projects.projsector) * 100)) AS '% WS',

concat(round(COUNT(CASE WHEN tbl_projects.projsector = 'Income Generation' THEN 1 END)/COUNT(tbl_projects.projsector) * 100)) AS '% IG'

FROM tbl_projects

Мой ожидаемый результат должен выглядеть следующим образом

AG  BC HT ED WS IG TotalSEctors  %AG  %BC %HT %ED %WS %IG    
2   1  0  2  3  0      8          25  13   0  25  38   0

Заранее спасибо

1 Ответ

0 голосов
/ 13 апреля 2019

Спасибо всем, кто пытался помочь с моим вопросом.Я наконец получил решение своего вопроса.Я собираюсь опубликовать код, который использовал ниже.

Теперь есть 2 аспекта значений, которые мне нужны для моего графика.Первые значения Normal COUNT, как показано ниже от AG до IG, а вторые значения Percentage, как видно от% AG до% IG.

AG  BC HT ED WS IG TotalSEctors  %AG  %BC %HT %ED %WS %IG    
2   1  0  2  3  0      8          25  13   0  25  38   0

Чтобы сгенерировать эти значения из таблицы, я покопался в сети и нашелнекоторые коды о том, как рассчитывать значения в MySQL с помощью PDO Prepared Statement.Изучив коды, я смог написать свои, как показано ниже

   <?php

    //database connection

    include('Connections/db.php');

    //create a function for count

    function rowCount($connect,$query){

        $stmt = $connect->prepare($query);

    $stmt->execute();

    return $stmt->rowCount();

    }

    ?> 

С этой строкой кодов я смог подсчитать записи и затем сгенерировать процент.

<h1> Agriculture = `<?php echo (rowCount($connect,"SELECT projsector AS '% AG' FROM 
tbl_projects WHERE projsector = 'Agriculture' ") /  rowCount($connect,"SELECT 
projsector FROM tbl_projects ")) * 100; ?>` </h1>

<h1> Building Construction = `<?php echo (rowCount($connect,"SELECT projsector AS '% 
AG' FROM tbl_projects WHERE projsector = 'Building Construction' ") /  
rowCount($connect,"SELECT projsector FROM tbl_projects ")) * 100; ?> </h1>

<h1> Health = `<?php echo (rowCount($connect,"SELECT projsector AS '% AG' FROM 
tbl_projects WHERE projsector = 'Health' ") /  rowCount($connect,"SELECT projsector 
FROM tbl_projects ")) * 100; ?>` </h1>

<h1> Education = `<?php echo (rowCount($connect,"SELECT projsector AS '% AG' FROM 
tbl_projects WHERE projsector = 'Education' ") /  rowCount($connect,"SELECT 
projsector FROM tbl_projects ")) * 100; ?>` </h1>   

<h1> Water Supply = `<?php echo (rowCount($connect,"SELECT projsector AS '% AG' FROM 
tbl_projects WHERE projsector = 'Water Supply' ") /  rowCount($connect,"SELECT 
projsector FROM tbl_projects ")) * 100; ?>` </h1> 

<h1> Income Generation = `<?php echo (rowCount($connect,"SELECT projsector AS '% AG' 
FROM tbl_projects WHERE projsector = 'Income Generation' ") /  
rowCount($connect,"SELECT projsector FROM tbl_projects ")) * 100; ?>` </h1>

ВЫХОД

Agriculture = 25%
Building Construction = 12.5%
Health = 0%
Education = 25%
Water Supply = 37.5%
Income Generation = 0%

Для нормальных значений COUNT без процентов, я использую эти коды

Agriculture = <?php echo rowCount($connect,"SELECT projsector AS '% AG' FROM 
tbl_projects WHERE projsector = 'Agriculture' "); ?>   

Building Construction = <?php echo rowCount($connect,"SELECT projsector AS '% BC' 
FROM tbl_projects WHERE projsector = 'Building Construction' "); ?>

Health = <?php echo rowCount($connect,"SELECT projsector AS '% HT' FROM tbl_projects 
WHERE projsector = 'Health' "); ?>   

Education = <?php echo rowCount($connect,"SELECT projsector AS '% ED' FROM 
tbl_projects WHERE projsector = 'Education' "); ?>

Water Supply = <?php echo rowCount($connect,"SELECT projsector AS '% WS' FROM 
tbl_projects WHERE projsector = 'Water Supply' "); ?>  

Income Generation = <?php echo rowCount($connect,"SELECT projsector AS '% IG' FROM 
tbl_projects WHERE projsector = 'Income Generation' "); ?> 

Я надеюсь, что кто-то найдет эти полезные

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