菜鸟在这里,对不起,如果我的问题不清楚,那么就可以了。

我有一个带有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 />";
}

08-06 23:27