Php 将select count数据放入Fetch数组查询行
我有一个脚本,可以从users表中检索具有相同id的所有用户,这很好。这些记录中的每个用户都有一个ID users\u sales\u guild\u ID,该ID也位于另一个名为sales\u list的表中 我想做的是从相应用户旁边的sales_list表中列出每个用户的总销售额 目前,它打印登录用户的金额John Smith,值为5,而不是每个金额,我哪里出错了 我希望它看起来怎么样 看起来怎么样 PHP代码Php 将select count数据放入Fetch数组查询行,php,mysql,arrays,row,fetch,Php,Mysql,Arrays,Row,Fetch,我有一个脚本,可以从users表中检索具有相同id的所有用户,这很好。这些记录中的每个用户都有一个ID users\u sales\u guild\u ID,该ID也位于另一个名为sales\u list的表中 我想做的是从相应用户旁边的sales_list表中列出每个用户的总销售额 目前,它打印登录用户的金额John Smith,值为5,而不是每个金额,我哪里出错了 我希望它看起来怎么样 看起来怎么样 PHP代码 您必须向sql添加子查询或联接,类似于: 加入: 子查询: SELECT n
您必须向sql添加子查询或联接,类似于: 加入: 子查询:
SELECT
name,
(SELECT COUNT(*) FROM sales_list
WHERE salesmen.id = sales_list.salesman.id) as sales_count
FROM salesmen
然后可以在输出中使用$row['sales\u count']
$num_rows是指返回的行数,它不包含任何特定的每个用户的销售额计数虽然这可能有效,但加入和分组会有更好的结果。按版本更新为join/group当我要计数时,通常使用join/group。但我突然想到,加入/加入团队有一个小问题。内部联接将从没有销售行的sales中排除行,如果您离开联接,则当没有销售行时,您将返回计数1,您将得到一个具有空值的销售行。一般来说,我在进行内部联接并省略这些结果时不会遇到问题,但如果OP想要显示它们,可能最好使用子查询。我将尝试子查询并联接,这会让您知道它有点混乱,我的数据库中没有“saller”或“name”表,我应该使用什么?
Name | Position | SID | Total Sales |
John Smith | Sales Consultant | 23434 | 5 | Details
Jane Smith | Sales Consultant | 34234 | 5 | Details
John Chan | Sales Manager | 43423 | 5 | Details
Jane Chan | Sales Consultant | 23344 | 5 | Details
$query = "SELECT `users_id`, `users_email` , `users_sales_guild_id` , `users_dealer_code_id` ,
`users_first_name` , `users_surname` , `users_dealer_name` , `users_type` , DATE_FORMAT(`registration_date`, '%d-%m-%Y')
AS `dr`
FROM `users`
WHERE `dealership_id` = '".$_SESSION['dealership_id']."'
AND (users_type = 'Sales Manager' OR users_type = 'Sales Consultant')
ORDER BY registration_date DESC";
$result = mysql_query("SELECT * FROM sales_list WHERE sales_list.users_sales_guild_id ='" . $_SESSION['users_sales_guild_id'] . "'");
$num_rows = mysql_num_rows($result);
$result = @mysql_query ($query); // Run the query.
echo '<table>
<tr>
<td align="center">Name</td>
<td align="center">Position</td>
<td align="center">ID</td>
<td align="center">Total Sales</td>
<td align="center"></td>
</tr>';
$bg = '#ffffff'; // Set the background color.
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$bg = ($bg=='#e1e3e6' ? '#cdcdcf' : '#e1e3e6'); // Switch the background color.
echo '<tr bgcolor="' . $bg . '">';
echo '<td align="center">' . $row['users_first_name'] . ' ' . $row['users_surname'] . ' </td>';
echo '<td align="center">' . $row['users_type'] . '</td>';
echo '<td align="center">' . $row['users_sales_guild_id'] . '</td>';
echo '<td align="center">' . $num_rows . '</td>';
echo '<td align="center"><a href="sm-sales-ind-2.php?smid=' . $row['users_id'] . '">Details</td>';
}
echo '</table>';
mysql_free_result ($result); // Free up the resources.
mysql_close(); // Close the database connection.
?>
SELECT name, COUNT(sales_list.*)
FROM salesman
JOIN sales_list ON salesman.id = sales_list.salesman_id
GROUP salesman.id
SELECT
name,
(SELECT COUNT(*) FROM sales_list
WHERE salesmen.id = sales_list.salesman.id) as sales_count
FROM salesmen