我想显示只会出现一次的医生的姓名及其适当限制的专业。我在这里有我的查询
select a.emp_fname,a.emp_lname,b.hcp_name, c.*, d.*,e.spec_type
from ehr_employee a
inner join ehr_c_hcp_emp c
on a.emp_id=c.emp_id
inner join ehr_hcp b
on b.hcp_id=c.hcp_id
inner join ehr_c_doc_spec d
on d.emp_id=a.emp_id
inner join ehr_specialization e
on e.spec_id=d.spec_id
而 ehr_c_hcp_emp
有
hcp_emp_id
emp_id
hcp_id
(员工表和 hcp 表的连接)。
而 ehr_c_doc_spec
有 doc_spec_id
emp_id
spec_id
(员工和专业表的连接)。为什么会这样,因为医生/员工可以在 1 个或多个不同的医院工作,并且可以拥有 1 个或多个专业。
上面的查询显示了这个结果
emp_fname emp_lname hcp_name spec_type
John Doe Hospital Cardio
John Doe Clinic Cardio
John Doe Hospital Psych
John Doe Clinic Psych
我的 php-html 代码是这样写的
<?php
$sel_admin = "*The query above*";
$rs_admin = mysql_query($sel_admin);
while($row = mysql_fetch_array($rs_admin))
{
echo" <tr class='gradeX'> ";
echo "<td>" .$row['emp_fname']." ".$row['emp_lname']. "</td>";
echo "<td>" .$row['hcp_name']. "</td>";
echo "<td>" .$row['spec_type']. "</td>";
echo"</tr>";
}
?>
它就像上面的查询一样产生
我想实现的是这样的一行
John Doe Hospital Psych
Clinic Cardio
注意:我也有很多这样的数据,我只是像可视化一样显示了它
最佳答案
我个人的解决方案是创建简单的结果集构建器,就像这样。然后你可以在行中做另一个 foreach。问题是,你是否想要每条记录的新行。因为那时@marc-b 的答案是正确的并且适用于多页。
$tableData = [];
$sqlData = [
0 => [
'userId' => 3,
'name' => 'Joe',
'group' => 'Good'
],
1 => [
'userId' => 3,
'name' => 'Joe',
'group' => 'Bad'
]
];
foreach ($sqlData as $item) {
if (!isset($tableData[$item['userId']])) {
$tableData[$item['userId']] = [
'name' => $item['name'],
'groups' => []
];
}
$tableData[$item['userId']]['groups'][] = $item['group'];
}
$tableData = [
3 => [
'name' => 'Joe',
'groups' => [
0 => 'Good',
1 => 'Bad'
]
]
];
关于php,mysql,html - 在 HTML 中正确显示 SQL 查询(连接),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37947991/