菜鸟在这里,对不起,如果我的问题不清楚,那么就可以了。
我有一个带有2个表(帐户和人员)的mysql数据库,我想显示“ account_name”,并在下面显示分配给该帐户的人员“名称”的列表。
使用下面的代码,我得到“ account_name”,并且只有第一位工作人员的“名称”被分配给该帐户。一些帐户分配了2个或更多的工作人员。
我得到:
目标(account_name)
staff1(“名称”)
沃尔玛(“ account_name”)
staff1(“名称”)
我想要:
目标(“帐户名”)
staff1(“名称”)
staff2(“名称”)
沃尔玛(“ account_name”)
staff1(“名称”)
staff2(“名称”)
staff3(“名称”)
任何帮助都将不胜感激。
亚历克斯
码:
$query = "SELECT staff.name, staff.drive_id, accounts.id, accounts.account_name
FROM staff
JOIN accounts
ON staff.drive_id = accounts.id
WHERE staff.drive_id = accounts.id
AND accounts.drive_date = CURDATE()
GROUP BY accounts.account_name";
$result = mysql_query($query);
while ($staff = mysql_fetch_array($result))
{
echo "<br />";
echo $staff['account_name'];
echo "<br /><br />";
echo $staff['name'];
echo "<br />";
}
最佳答案
分组依据将所有结果减少到每个分组字段一个结果
$query = "SELECT staff.name, staff.drive_id, accounts.id, accounts.account_name
FROM staff
JOIN accounts
ON staff.drive_id = accounts.id
WHERE staff.drive_id = accounts.id
AND accounts.drive_date = CURDATE()
ORDER BY accounts.account_name";
然后,可以在您的浏览器中检查account_name是否已更改为与先前结果相比,并首先回显帐户详细信息,然后是名称。
$result = mysql_query($query);
$account = '';
while ($staff = mysql_fetch_array($result))
{
if($account == $staff['account_name'])
{
echo "<br />";
echo $staff['account_name'];
$account = $staff['account_name'];
}
echo "<br /><br />";
echo $staff['name'];
echo "<br />";
}