noob在这里,对不起,如果我的问题不清楚,但现在就这样了。
我有一个带有2个表(帐户和员工)的mysql数据库我想显示“account_name”,并在其下面列出了分配给该帐户的员工“名称”。
使用下面的代码我得到“account_name”,只有第一个员工的“名称”分配给该帐户。一些账户有2名或更多的工作人员被分配。
我明白了:
目标(account_name)
staff1(“名称”)
WalMart(“account_name”)
staff1(“名称”)
我想:
目标(“account_name”)
staff1(“名称”) staff2(“名称”)
WalMart(“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 />";
}
答案 0 :(得分:1)
分组依据将每个分组字段的所有结果减少到一个结果您按照
排序$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 />";
}
答案 1 :(得分:0)
您需要操作员指定如何组合帐户名称,例如:
$query = "SELECT staff.name, staff.drive_id, accounts.id,
GROUP_CONCAT(accounts.account_name SEPARATOR ' ')
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"
有关详细信息和选项,请参阅MySql's group by functions。