尽管我确信有一个简单的答案,但我一直在努力解决这个问题几个小时.我正在尝试从同一个表中收集月度信息和年初至今的信息.我也加入了第二张桌来收集团体名称.
费用表:
+-----------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+---------------+------+-----+---------+----------------+
| id | int(5) | NO | PRI | NULL | auto_increment |
| account | char(14) | NO | | NULL | |
| batch | int(5) | NO | | NULL | |
| date | date | NO | | NULL | |
| description | varchar(50) | NO | | NULL | |
| debit | decimal(10,2) | NO …Run Code Online (Sandbox Code Playgroud) 我承认我在JavaScript和JSON方面很弱.我花了很多时间试图弄清楚为什么我的对象中的数字在加在一起时会返回NaN.考虑到这一点,下面是我的JSON,存储到变量:
var data = [
{
"acc_ext_id": null,
"cat_code": 10002,
"cat_ds": "REVENUE",
"category_id": null,
"chart_id": null,
"created_at": null,
"dept_id": null,
"feb": null,
"id": null,
"jan": 30,
"note": null,
"total_cost": null,
"updated_at": null,
"year_id": null
},
{
"acc_ext_id": "41260-02600",
"cat_code": 10002,
"cat_ds": "REVENUE",
"category_id": 2,
"chart_id": 2373,
"created_at": "2013-01-15 16:43:52.169213",
"dept_id": 86,
"feb": 45,
"id": 3,
"jan": 60,
"note": "Two",
"total_cost": 105,
"updated_at": "2013-01-15 16:43:52.169213",
"year_id": 1
}
]
Run Code Online (Sandbox Code Playgroud)
然后我尝试迭代对象并对值求和:
var jan;
for (var i=0;i<data.length;i++){
if(data[i].jan != null){
jan += parseFloat(data[i].jan); …Run Code Online (Sandbox Code Playgroud) 我试图通过在连接上替换我的参数来避免任何SQL注入漏洞.
Category.joins("LEFT OUTER JOIN incomes ON incomes.category_id = categories.id AND incomes.dept_id = ?", params[:Dept])
Run Code Online (Sandbox Code Playgroud)
这会尝试在其中执行带有问号的查询,而不是将其替换为param.这样做的正确方法是什么?
编辑:
查询需要返回:
SELECT categories.*
FROM "categories"
LEFT OUTER JOIN incomes
ON incomes.category_id = categories.id AND incomes.dept_id = 86
Run Code Online (Sandbox Code Playgroud)
不
SELECT categories.*
FROM "categories"
LEFT OUTER JOIN incomes
ON incomes.category_id = categories.id
WHERE incomes.dept_id = 86
Run Code Online (Sandbox Code Playgroud)
效果差异很大!