如何从两个表中获取总数并使用该值进行计算? (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次时

Laravel - 从不同的表中获取总和并计算

Laravel - 从数据透视表中获取额外的列值

在 EditText 上使用 TextWatcher 在 android 中实时计算总数和总和?

如何将总和存储到 MS Access 表中

如何从转义闭包中获取值并将其分配给变量并在表格视图中显示