您好我有一个名为延迟的SQL表
Delaytype | Delayhours
Engineering | 1
Engineering | 2
Human Error | 4
我使用以下内容查询此表:
"SELECT Delaytype, SUM('Delayhours') as cnt FROM delays GROUP BY
Delaytype;" //
在我的PHP中,如果我
echo ' <tr><td>'.$row['Delaytype'].'</td>td>'.$row
['Delayhours'].'</td></tr>
我得到了
Engineering 3
Human Error 4
我需要一种为此添加颜色的方法。
所以
我可以输出
echo ' <tr><td>'.$row['Delaytype'].'</td><td>'.$row
['Delayhours'].'</td><td>'.$row['color'].'</td></tr>
这是因为我需要在我的JSON中放置与Delaytype相关联的颜色。
因此工程变红,人为错误变黄。
目前我在做:
sql query ...
$myData = array();
while($row = mysqli_fetch_array($result))
{
$myData[] = array('value =>(int)$row['cnt'],color => '#878BB6');
这一切都有效但我在每个数据集中都得到相同的颜色
json_encode($myData);
这对我来说并不令人惊讶。我想知道如何用PHP为我的数组添加颜色。或者是一个SQL解决方案,它可以让我只创建一个列。
延迟类型不是动态的,它将是一个设定的数量,所以我只需要能够得到x个颜色。
更新:
i know have two tables
1) delays --- Delaytype | Delayhours \\ correct case
2) delaycolors --- Delaytype | Color \\correct case
I am getting errors with the following query :
$result = ($con, "SELECT d.Delaytype, c.Color, SUM('Delayhours') AS cnt
FROM delays AS d
JOIN delaycolors AS c ON d.Delaytype = c.Delaytype
GROUP BY d.Delaytype; ");
这给我一个提取错误,表明上述方法无效。 @Barmer
答案 0 :(得分:2)
添加另一个将DelayColors
映射到颜色的表DelayType
:
Delaytype | Color
Engineering | red
Human Error | yellow
然后在您的查询中使用JOIN
:
SELECT d.DelayType, c.color, SUM(DelayHours) AS cnt
FROM delays AS d
JOIN DelayColors AS c ON d.DelayType = c.DelayType
GROUP BY d.DelayType
答案 1 :(得分:0)
你的意思是:
SELECT Delaytype,
SUM('Delayhours') as cnt,
(SELECT CASE WHEN Delaytype = 'Engineering' THEN 'RED' ELSE 'YELLOW' END as color)
FROM delays
GROUP BY Delaytype
您可以使用RGB值更改RED
和YELLOW
。但是,如果你这样做只是为了获得行之间的差异,这样便于阅读。它最好通过CSS而不是SQL来完成。