INNER join返回不返回总结果

时间:2015-01-03 06:46:32

标签: php html mysql

trade_data表


id符号行动价格百分比


1 1买3.4 50


2 1卖出3.8 25


3 2卖45 75


3 2买25.2 50


符号表


id name


1 RCC


2 REG



SELECT SUM(IF(trade_data.action =' BUY',price,0))AS' BUYSUM',SUM(IF(trade_data.action ='卖出&#) 39;,价格,0))AS' BUYSELL',AVG(trade_data.percent)AS peravg,symbol。 *     来自trade_data     INNER JOIN symbol ON trade_data.symbol = symbol.id

此查询给了我一行但在此条件下有两行可用。 但是当我更改查询为

SELECT trade_data.* , symbol. * 
FROM  `trade_data` 
INNER JOIN  `symbol` ON trade_data.symbol = symbol.id

然后这个查询给了我精确的2行。

3 个答案:

答案 0 :(得分:1)

使用group by with aggregate function 离。

SELECT SUM( IF( trade_data.action =  'BUY', price, 0 ) ) AS  'BUYSUM', SUM( IF( trade_data.action =  'SELL', price, 0 ) ) AS  'BUYSELL', AVG( trade_data.percent ) AS peravg, symbol. * 

FROM trade_data INNER JOIN symbol ON trade_data.symbol = symbol.id group by symbol.id

答案 1 :(得分:0)

mysql中的

SUM()为您提供结果行中指定列的总和。所以在这里,SUM(价格)会给你总价,加上每一行的价格值。并且总数始终是单个值,因此您可以获得单行输出。

希望这会有所帮助。

答案 2 :(得分:0)

您正在使用AVG()SUM()功能,这就是您获得单一依赖的原因

The AVG() Function
The AVG() function returns the average value of a numeric column.


The SUM() Function
The SUM() function returns the total sum of a numeric column.

如果您有多个trade_data.symbol = symbol.id(超过1个ID),则可以使用GROUP BY获取具有相似ID的每个记录的总和和平均值,因为您只有1个symbol.idtrade_data.symbol你只能获得一条记录。

相关问题