mssql回复某些结果
这是我在*上的第一篇文章,但我多次使用该网站,所以首先我要感谢你们与世界分享的所有伟大的答案。 我用谷歌和搜索功能之前,我张贴在这里,但我无法找到解决我的问题的答案。mssql回复某些结果
目标是创建一个谷歌堆积图,但他们需要一个非常特定的数组格式。 在大多数情况下,我设法创建一个图,但对于这一个我无法得到正确的输出的MSSQL查询。
结果我通过查询得到的是在相关的PHP名单与PHP以下
Name Case Count
Company A Incident 6
Company A Request 28
Company A Problem 2
Company B Incident 1
Company B Problem 15
Company C Incident 60
Company C Problem 45
Company C Request 30
Company C Change 24
我通过以下简单的SQL查询
SELECT top 20
CRM_MSCRM.dbo.FilteredAccount.name,
CRM_MSCRM.dbo.FilteredIncident.casetypecodename,
count(casetypecodename) as count
FROM
CRM_MSCRM.dbo.FilteredIncident
JOIN CRM_MSCRM.dbo.FilteredAccount on CRM_MSCRM.dbo.FilteredIncident.bb_accounttocaseid = CRM_MSCRM.dbo.FilteredAccount.accountid
GROUP BY
casetypecodename, name
实现了这一结果。如果我赞同这个我得到以下内容:
Company A 6
Company A 28
Company A 2
Company B 1
Company B 15
etc ...
但我需要的是以下几点:
Company A 6, 28, 2
Company B 2, 1
我该如何回应我的查询(或修改查询来实现,我需要为我的图表格式。
['Name', 'incident', 'change'],
['Company A', 10, 24, ],
['Company B', 16, 22, ],
['Company C', 28, 19, ]
这是我的PHP代码,只是一个测试页面,让我的结果。将此插入图表不是问题,问题在于图表需要的格式。
$sql="
// query goes here
";
$stmt = sqlsrv_query($conn, $sql);
if($stmt === false) {die(print_r(sqlsrv_errors(), true));}
while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC))
{
echo $row [name];
echo $row [tellen]; // but this doesnt work
}
?>
我该如何回应结果以达到我的目标?
在此先感谢
首先,关于当前的代码稍加注意:
echo $row [name];
你显然让你的编码没有配置PHP开发框来显示所有的错误信息盲目。我建议你看个明白,直到你可以看到两个通知你应该得到:
Notice: Use of undefined constant name - assumed 'name'
Notice: Undefined index: name
我也建议您查看PHP语法,这实际上是从灵感来自其他语言差别不大的基本知识C语法。了解string literals(和他们不同,从constants),当然还有arrays。
因为你可以重写你的SQL查询返回你需要,我不认为这是值得的时候(如果我理解正确的规格),一个简单的PHP数组会做的伎俩努力确切的数据格式。
我有一个印象,唯一的问题是您不熟悉编程语言中数组的概念。这不是完整演讲的地方,但数组是指定顺序很重要的值列表,这些值可以是任何PHP变量(包括其他数组)。这最后一点就是这个转换的关键在于:
Company A 6
Company A 28
Company A 2
Company B 1
Company B 15
...这个:
Company A 6, 28, 2
Company B 2, 1
当你阅读的结果在sqlsrv_fetch_array()
回路设置你可以存储值2-二维数组。你可以看到在行动的语法在PHP手册Recursive and multi-dimensional arrays例子,但是,你的情况,这会是:
$values = [];
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
$values[$row['name']][] = $row['casetypecodename'];
}
您可以检查与例如生成的数组var_dump()。完成后,可以使用foreach()循环外部数组,并将每个内部数组合并为一个逗号分隔的字符串,其中包含implode()。
你的PHP脚本在哪里?你试过什么了 ? –
您只需要一个二维数组,不是吗? –
@ Alvaro Gonzalez:是的,我需要一个维数组 – Stage