MySQL-union 1 SELECT表和1个SUM/COUNT表
我有两张桌子。一个表的MySQL-union 1 SELECT表和1个SUM/COUNT表,mysql,Mysql,我有两张桌子。一个表的列中有一条记录,名为总体经验,另一个表的实际列名为总体经验,其中填写了调查分数 现在,这意味着我没有传统意义上的并集,其中两个表共享相同的记录值,而是尝试通过从表1中选择列名,然后从表2中的特定列中选择计数数据来链接两个表 这里是我正在努力解决的问题。这件事怎么办 编辑: 我计划运行一个mysqli\u fetch\u数组,然后echo将变量放在我需要它们的表中。大概是这样的: $sql = " (SELECT `Column`, `Department`, `Target
列
中有一条记录,名为总体经验
,另一个表的实际列名为总体经验
,其中填写了调查分数
现在,这意味着我没有传统意义上的并集,其中两个表共享相同的记录值,而是尝试通过从表1中选择列名
,然后从表2中的特定列中选择计数
数据来链接两个表
这里是我正在努力解决的问题。这件事怎么办
编辑:
我计划运行一个mysqli\u fetch\u数组
,然后echo
将变量放在我需要它们的表中。大概是这样的:
$sql = "
(SELECT `Column`, `Department`, `Target` FROM `table_1` WHERE `Column` = 'Overall Experience')
UNION
(SUM(`Overall Experience` >= 8) / COUNT(*) * 100 AS med_osat,
COUNT(`Overall Experience`) AS med_osat_cnt FROM `table_2`)";
while($row = mysqli_fetch_array($result)){
$med_osat = $row['med_osat'];
$med_osat_cnt = $row['med_osat_cnt'];
$med_osat_tgt = $row['Target'];
$med_osat_dept = $row['Department'];
$med_osat_name = $row['Column'];
$med_osat_var = ($med_osat_tgt - $med_osat);
// echo variable in a table
}
多谢各位
编辑2:
要澄清表格结构,请执行以下操作:
表1
ID、列、部门、目标
表2
100多列调查数据,其中一列名称与表1中的
列值匹配首先,应用联合时,列数和列名称应相同
第二件事,如果你也能分享表格结构会更好,这样我就可以看看这两个表格的结构,更多的建议只会是可用的,问题是可以理解的
你可以在这里试试:
由于每个查询只返回一行,因此可以将两组值交叉连接在一起:
$sql = "
SELECT t1.*, t2.*
FROM (SELECT `Column`, `Department`, `Target`
FROM `table_1`
WHERE `Column` = 'Overall Experience') t1
CROSS JOIN (SELECT SUM(`Overall Experience` >= 8) / COUNT(*) * 100 AS med_osat,
COUNT(`Overall Experience`) AS med_osat_cnt
FROM `table_2`) t2";
这将产生适合PHP代码中显示的处理的输出
您的预期结果是什么样的?@tcadidot0请查看编辑。查询的第一部分(来自表1
)是否返回多行?@Nick,no,结果正好是一行,包含详细信息,例如调查的总体体验分数的目标
分数。联盟
不会以这种方式工作。。此外,您缺少一个选择
非常感谢,这正是我需要的。谢谢你的帮助@不用担心,我很高兴能帮上忙。