我希望获得一些sql帮助。以下是我的表格的示例:
username | dataout(MB) | datain(MB)`| sessiontime
Dude | 1000 | 500 | 2016-02-24 07:30:00
Dude | 2500 | 3000 | 2016-01-31 07:30:00
我想要离开的地方:
username | data(MB) (all data counted together) |
Dude | 7000 |
我的Sql看起来像这样:
$allusers = db('DataBase')
->table('userinfo')
->join('radcheck', 'radcheck.username', '=', 'userinfo.username')
->join('pricing', 'pricing.pkg_id', '=', 'userinfo.PAKKET')
->join('radacct', 'radacct.username', '=', 'userinfo.username')
->select('pricing.price',
'pricing.Tusage',
'userinfo.RKNR',
'userinfo.MEMO',
'userinfo.DTORDER',
'radacct.dataout',
'radacct.datain')
->where('radcheck.active', '=', 1)
->where('radcheck.enabled', '=', 1)
->where('radacct.acctstarttime', '>', $monthStart)
->where('radacct.acctstarttime', '<', $monthEnd)
->get();
提前谢谢你。
以下是我查询的内容:
问题是所有这些数组都是针对同一个用户(RKNR)而我需要一个包含所有数据的数组,并且需要一个数组。
答案 0 :(得分:1)
试试这个:
SELECT username,
SUM(dataout + datain) AS total_data
FROM .... (insert tables/join over here)
GROUP BY username;
答案 1 :(得分:0)
您可以尝试这样的方法,以datain
之前得到dataout
和username
的总和:
SELECT username, SUM(dataout) + SUM(datain) AS data FROM tablename WHERE username = 'username';
答案 2 :(得分:0)
感谢knn。我使用SQL作为 - &gt; selectRaw。它完美无缺。 对于将来的参考,这就是它的结果:
$allusers = db('radius')
->table('userinfo')
->join('radcheck', 'radcheck.username', '=', 'userinfo.username')
->join('pricing', 'pricing.pkg_id', '=', 'userinfo.PAKKET')
->join('radacct', 'radacct.username', '=', 'userinfo.username')
->select('pricing.price',
'pricing.Tusage',
'userinfo.RKNR',
'userinfo.MEMO',
'userinfo.DTORDER')
->selectRaw(' SUM(acctinputoctets) + SUM(acctoutputoctets) AS TotalOctets')
->where('radcheck.active', '=', 1)
->where('radcheck.enabled', '=', 1)
->where('radacct.acctstarttime', '>', $monthStart)
->where('radacct.acctstarttime', '<', $monthEnd)
->get();