我有四个要加入的表,并希望返回表 lab_test 中属于 lab_test_group 的所有行并将它们显示为(以粗体显示的组...):
肌酐清除率
肌酐(液体)
肌酐(24 小时尿)
甲状腺功能测试 (1)
免费 T4
促甲状腺激素
具有相关数据的表结构为:
试验
+-------------+-----------------------------+
| lab_test_pk | lab_test |
+-------------+-----------------------------+
| 191 | Creatinine (Fluid) |
| 208 | Free T4 |
| 782 | Creatinine (24 hour Urine) |
| 1161 | Thyroid Stimulating Hormone |
+-------------+-----------------------------+
model_lab_test_lookup
+--------------------------+-------------+------------+
| model_lab_test_lookup_pk | lab_test_fk | pathway_fk |
+--------------------------+-------------+------------+
| 26 | 2 | 90 |
| 27 | 8 | 90 |
+--------------------------+-------------+------------+
实验室测试组
+-------------------+----------------------------+
| lab_test_group_pk | group_name |
+-------------------+----------------------------+
| 2 | Creatinine clearance |
| 8 | Thyroid function tests (1) |
+-------------------+----------------------------+
lab_test_group_lookup
+--------------------------+-------------------+--------------+
| lab_test_group_lookup_pk | lab_test_group_fk | lab_test_fk |
+--------------------------+-------------------+--------------+
| 6 | 2 | 191 |
| 7 | 2 | 782 |
| 41 | 8 | 208 |
| 42 | 8 | 1161 |
+--------------------------+-------------------+--------------+
我正在使用的查询是:
SELECT *
FROM lab_test_group,
lab_test_group_lookup,
model_lab_test_lookup,
lab_test
WHERE lab_test_group.lab_test_group_pk = model_lab_test_lookup.lab_test_fk
AND lab_test_group_lookup.lab_test_group_fk = lab_test_group.lab_test_group_pk
AND lab_test_group_lookup.lab_test_fk = lab_test.lab_test_pk
AND model_lab_test_lookup.pathway_fk = '$pathway_pk'
GROUP
BY lab_test_group.lab_test_group_pk
在此示例$pathway_pk
中 == 90。
用下面的代码来显示:
<?php
while ($row_lab_test_groups = mysql_fetch_assoc($result_lab_test_groups)){
$test_groups_array[] = $row_lab_test_groups;
echo "<tr><td colspan='5'>" . $row_lab_test_groups['group_name'] . "</td></tr>";
foreach($test_groups_array as $r){
echo "<tr><td>" . $r['lab_test'] . "</td></tr>";
}
}
?>
现在返回:
肌酐清除率 -
肌酐(液体)
甲状腺功能测试 (1) -
肌酐(液体)
游离 T4
部分问题是 GROUP BY,其中每个 lab_test 只返回一条记录,而不是每个 lab_test_group 的两条 lab_tests。
问题是如何获得相关 lab_test_group 下显示的所有实验室测试?这是每组两个。
笔记:
表 model_lab_test_lookup 中的 lab_test_fk 用于保存各个 lab_test 行的键以及 lab_test_group 的键...