SQL 连接或 PHP 循环?要不然是什么?

Posted

技术标签:

【中文标题】SQL 连接或 PHP 循环?要不然是什么?【英文标题】:SQL join or PHP loop? or what?SQL 连接或 PHP 循环?要不然是啥? 【发布时间】:2013-02-16 16:36:54 【问题描述】:

所以我有两个查询给我我需要的信息,我试图找出从他们那里得到结果的最佳方法。我有一个控股表。使用:

SELECT symbol, sum(shares) AS shares, sum(shares * price) AS cost 
FROM Transactions 
WHERE (action <>5) 
    AND date <= '2010-10-30' 
GROUP BY symbol HAVING sum(shares) > 0

导致

AGNC    50.00     1390.0000
RSO     1517.00   9981.8600
T       265.00    6668.7500

然后我有另一个问题

SELECT close FROM History WHERE symbol = $symbol AND date = $date

这将返回当天的收盘价。

T    24.40

我想基本上为给定的日期计算值,因此每个符号的总和(股数 * 关闭)。但我不知道如何在 php 中循环遍历每一行。我希望有一个连接或我可以在 sql 中执行的操作以使数据以我想要的方式返回

【问题讨论】:

仅供参考,您可以使用数字来比较日期值date @popnoodles - 但由于很多人使用日期作为列名,它是少数实际上不需要反引号的保留字之一 这是真的马克还是你在拉我的腿? 我使用它没有反引号 【参考方案1】:

我认为您可以执行类似的操作:A select query selecting a select statement 将您的第二个查询按字面意思放在第一个查询中。不确定确切的语法,但喜欢:

SELECT 
    symbol, 
    sum(shares) AS shares, 
    sum(shares * price) AS cost, 
    sum(shares * close) as value 
FROM Transactions 
INNER JOIN History ON (symbol = $symbol AND date = $date)
WHERE (action <>5) 
    AND date <= '2010-10-30' 
GROUP BY symbol HAVING sum(shares) > 0

@popnoodles 对你的命名是正确的。如果您使用日期,我认为您需要 [日期]。

【讨论】:

在其中使用另一个选择查询的问题在于它只给了我一个符号。正如您在第一个查询示例中看到的那样,我有多个符号。我希望可能会加入某种我可以做的事情。其他明智的病只需要在php中做一个循环 好吧,我认为您可以执行类似INNER JOIN History ON (symbol = $symbol AND date = $date) 的操作,然后将其添加到您的选择列表并在那里使用它。我认为这会奏效。我不确定你是否可以这样做,但我认为你可以。 INNER JOIN History ON (History.symbol = Transactions.symbol AND History.date = Transactions.date)? 这就是我得到我想要的数据的方式SELECT Transactions.symbol, sum(shares) AS shares, sum(shares * price) AS cost, History.close as close, (shares * History.close) as value FROM Transactions INNER JOIN History ON (History.symbol = Transactions.symbol AND History.date ='2013-02-08') WHERE (action &lt;&gt;5) AND Transactions.date &lt;= '2013-02-08' GROUP BY Transactions.symbol HAVING sum(shares) &gt; 0

以上是关于SQL 连接或 PHP 循环?要不然是什么?的主要内容,如果未能解决你的问题,请参考以下文章

php 如何输出DB类上所有SQL语句,页面上的所有 有关mysql 连接,语句 等信息

SQL Server 2008 中嵌套循环连接和哈希连接的区别

PHP使用pdo连接access数据库并循环显示数据操作示例

PHP SQL Server连接工作或不工作[重复]

php在连接mysql时为啥会包这样的错误?

什么叫宽带连接