如何从两个表中获取总数并使用该值进行计算? (sql, asp)
Posted
技术标签:
【中文标题】如何从两个表中获取总数并使用该值进行计算? (sql, asp)【英文标题】:How to get total from two tables and use the value for calculations? (sql, asp) 【发布时间】:2015-12-19 00:13:20 【问题描述】:我想查找当前日期过去一周内 tblCreatedItems 和 tblInventory 中的总数。 tblCreatedItems 的总计显示得非常好。但是 tblInventory 的那个根本不显示。
我的桌子是: tblItem(项目 ID、项目名称、价格) tblCreatedItems(ItemID,数量) tblInventory(成分名称、价格、数量)
目前这是我的代码:
<% dim Con,rs, sql
set con = server.CreateObject("ADODB.Connection")
set rs = server.CreateObject("ADODB.Recordset")
Con.Open("DRIVER=Microsoft Access Driver (*.mdb, *.accdb); DBQ=" & Server.MapPath("Database/Name.accdb"))
sql = "SELECT tblItem.Price, tblCreatedItems.Quantity, tblCustomer.OrderDate, Price InventoryPrice FROM tblCreatedItems,tblInventory, tblItem, tblCustomer WHERE tblCustomer.OrderDate BETWEEN Date() AND Date()-6 AND tblItem.ItemID=tblCreatedItems.ItemID AND tblCustomer.CustomerID=tblCreatedItems.CustomerID"
rs.open sql, Con
%>
<form name="InsertFinancialInformation" method="post" action="">
<table class="Table" align="center" >
<th colspan="4">Financial Information Entry</th>
<tr><td colspan="4" bgcolor="#999999">Cost of Sales:</td></tr>
<tr>
<td>Opening Stock</td>
<td>Purchases</td>
<td>Gross Profit</td>
</tr>
<tr>
<%while not rs.eof%>
<%
dim Total
Total = Total + (rs("Price")*rs("Quantity"))
%>
<% rs.movenext
wend
%>
<td><input type="text" name="" value="<%response.write(Total)%>"/></td>
<td><input type="text" name="" value="
<%while not rs.eof%>
<%
dim InventoryTotal
InventoryTotal = InventoryTotal + (rs("tblInventory.Price")*rs("tblInventory.Quantity"))
%>
<% rs.movenext
wend
%>
<%response.write(InventoryTotal)%>"/></td>
<td><%response.write(Total-InventoryTotal)%></td>
</form>
【问题讨论】:
您的查询似乎根本不涉及 tblInventory。 可怕的表结构,考虑重组它们。出于某种原因,它被称为关系数据库管理系统(RDMS)。 这两张表是用来存储的。所以主系统中不需要的任何信息在使用后都复制到这里。并且 ItemID 是 tblCreatedItems 中的 FK 哇,原来的问题中有一块拼图会很好。 【参考方案1】:您的第一个循环正在遍历记录集,直到结束。然后你的第二个循环尝试做同样的事情。但是记录集已经在末尾,所以没有任何记录可以循环。您需要在第二个循环之前重新查询数据库或使用 rs.movefirst (我不太确定这是否是经典 asp 的有效命令)。
【讨论】:
是的,我刚才试过了,但它循环的次数超出了它应该循环的次数。所以它对另一个表中的每个项目都重复了。例如,表 1 有 6 条记录,表 2 将循环 6 次 那将是您的 SQL。看起来您正在一些表之间匹配 id,但不是库存表。这可能就是你呈指数循环的原因。 库存是每个单独的成分,所以我如何才能将它与不同的表相匹配。这张桌子不喜欢另一张桌子。我正在匹配 id 以从另一个表中获取该表中项目的信息。 您需要以某种方式构建一个查询,将您的库存表与客户表中的 OrderDate 链接起来。在建议实际查询之前,我们需要有关您的数据库架构的更多信息。以上是关于如何从两个表中获取总数并使用该值进行计算? (sql, asp)的主要内容,如果未能解决你的问题,请参考以下文章
如何计算表中的值并返回true,仅当使用php mysql找到该值5次时