MySQL查找不同数量和价格的商品的总销售额
Posted
技术标签:
【中文标题】MySQL查找不同数量和价格的商品的总销售额【英文标题】:MySQL finding total sale of items of varying quantity and price 【发布时间】:2021-04-07 01:31:15 【问题描述】:基本上,我正在尝试创建一个 html 表格,该表格显示 MySQL 中表格中的各种项目 - 关于书籍和书籍销售。基本上我需要
-
找出每本书的总销售额,这些书可以是同一本书,但价格不同,每笔销售的数量不同。到目前为止,我已经成功地在 php 中创建了一个循环来显示这样的表格,它看起来像这样:
很遗憾,总销售价格计算不正确,我正试图找出原因,因为我怀疑这与我的查询有关。
这是有问题的表格:
正如您在表格中看到的,同一本书可以出现多种时间,并且具有不同的数量和单价。我的一些计算是正确的,但其他一些是不正确的。例如,图书 ID 103 不正确。
这是我的 HTML 代码,再次感谢您尝试帮助我解决这个问题!:
<!DOCTYPE html>
<html lang="en">
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<link rel="stylesheet" href="new.css">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<nav class="navbar navbar-default navbar navbar-inverse">
<div class="container">
<h2> <a class="head" href="base.php" style="text-decoration: none;">Database Project</a> <a class="btn btn-danger btn-sm main" href="login.php" role="button">Sign Out</a></h2>
</div>
</nav>
<div class="container">
<div class="jumbotron">
<h1>Book Report:</h1><br>
<table>
<tr>
<th>ID</th>
<th>Title</th>
<th>Quantity</th>
<th>Total Sale Price</th>
</tr>
<?php
$conn = mysqli_connect("localhost","root","","Zion");
if ($conn-> connect_error)
die("Connection Failed:". $conn-> connect_error);
$sql = "SELECT ID,Title,(SELECT Sum(Quantity) from Sale where BookId = Book.id ) as Quantity,(SELECT Sum(UnitPrice) from Sale where BookId = Book.id ) as Price from Book";
$result = $conn-> query($sql);
if ($result = $conn->query($sql))
while($row = $result->fetch_assoc())
echo "<tr><td>". $row["ID"] . "</td><td>". $row["Title"]."</td><td>". $row["Quantity"]. "</td><td>". "$".$row["Price"]. "</td></tr>";
echo"</table>";
$conn-> close()
?>
<!-- Generate a report that for each book, displays the book id, the book title,
the quantity and the total sales price, sorts by the book id in increasing order; -->
</div>
</body>
</html>
【问题讨论】:
你不需要 Sum(Quantity*price) 吗? 嗯,你可能是对的,知道我将如何实现它吗? 只需将两者相乘 - 从销售中选择总和(数量*价格)......等 为什么还要子查询?可以select ID,Title, sum(Quantity) as sold, sum(Quantity * UnitPrice) as 'total sales' from Sale group by id
非常感谢您的建议!
【参考方案1】:
以下使用连接的 sql 查询将帮助您实现目标。该查询检索每本书(按Book.Id
和Book.Title
分组),每次销售时存储在Quantity
和Price
中的总销量,通过将特定书籍的数量乘以每本书的单价来确定那个时候订的。
SELECT
Book.ID,
Book.Title,
SUM(Sale.Quantity) as Quantity,
SUM(Sale.UnitPrice*Sale.Quantity) as Price
FROM
Sale
INNER JOIN
Book on Book.Id = Sale.BookId
GROUP BY
Book.ID, Book.Title
我使用了相同的列名,所以这应该像你的 php 代码一样工作,例如:
$sql="SELECT Book.ID, Book.Title, SUM(Sale.Quantity) as Quantity, SUM(Sale.UnitPrice*Sale.Quantity) as Price FROM Sale INNER JOIN Book on Book.Id = Sale.BookId GROUP BY Book.ID, Book.Title";
【讨论】:
以上是关于MySQL查找不同数量和价格的商品的总销售额的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 2008 R2-查询以获取按月销售的总销售额和数量