Php 什么';这是从mysql中提取数据的最有效方法,因此数据的格式如下:
我有一个包含患者信息(姓名、dob、ssn等)的表和一个包含他们服用药物列表的表。(阿司匹林、克拉丁等)这些表由患者表的唯一id关联。所以,把玛丽·史密斯的所有药物都取出来很容易 但是,我需要做的是显示一个分页的患者列表,显示他们的姓名,患者表中的其他内容,并有一列以行分隔的药物列表。大致来说,这是: 如果我做一个简单的左连接,我会得到3行重复的Mary Smith,每行一种药物 患者表可以有数千条记录,所以我不想查询所有患者,然后循环获取他们的药物。而且,因为它是根据患者分页的,所以我不知道如何获得页面上正确的患者数量以及他们的所有药物Php 什么';这是从mysql中提取数据的最有效方法,因此数据的格式如下:,php,mysql,performance,Php,Mysql,Performance,我有一个包含患者信息(姓名、dob、ssn等)的表和一个包含他们服用药物列表的表。(阿司匹林、克拉丁等)这些表由患者表的唯一id关联。所以,把玛丽·史密斯的所有药物都取出来很容易 但是,我需要做的是显示一个分页的患者列表,显示他们的姓名,患者表中的其他内容,并有一列以行分隔的药物列表。大致来说,这是: 如果我做一个简单的左连接,我会得到3行重复的Mary Smith,每行一种药物 患者表可以有数千条记录,所以我不想查询所有患者,然后循环获取他们的药物。而且,因为它是根据患者分页的,所以我不知道
(患者/药物只是数据的一个粗略示例;因此请不要建议重新构造数据的存储方式。)您有几个选择
分隔的药物名称$previous_name = null;
$first = true;
echo "<table";
while($row = mysql_fetch_assoc($results)) {
if ($row['name'] <> $previous_name) {
if (!$first) {
echo "</td></tr>"; // end previous row, if it's not the first row we've output
$first = false;
}
echo "<tr><td>$row[name]</td><td>"
$previous_name = $row['name'];
}
echo "$row['drug']<br />";
}
echo "</td></tr></table>";
$previous\u name=null;
$first=true;
呼救
SELECT patients.first_name, patients.last_name, GROUP_CONCAT(prescriptions.medication SEPARATOR ", ") AS meds FROM patients LEFT JOIN prescriptions ON prescriptions.patient_id = patients.id GROUP BY patients.id;
我认为您正在寻找的是“子查询的浓缩”。
检查并很好!我不知道GROUP_CONCAT
。我会记住这一个,以备需要。+1谢谢你。如果你不知道某些东西的术语,可能很难找到答案。没问题,艾米。我完全理解。大多数人可能也不知道这个聚合函数。