val1 = 1
val2 = "1"
if val1 == val2 #< Question is in this line
end
Run Code Online (Sandbox Code Playgroud)
如何比较数字及其字符串表示?
我是sql的新手,感谢任何帮助.
我有两张桌子,employees
和jobs
.employees
包含变量job_id
(多个员工可以拥有相同的job_ID).jobs
包含变量job_id
和job_title
(一个job_ID对应一个job_title,如果你感兴趣,这是oracle中的hr模式).
我想要返回查询:job_title,job_ID和具有相同job_Id的人数.
我尝试了以下代码:
select j.job_title, e.job_ID, count(e.job_ID)
from employees e, jobs j
where e.job_id=j.job_id
group by e.job_Id
Run Code Online (Sandbox Code Playgroud)
错误消息是:
ORA-00979:不是GROUP BY表达式00979. 00000 - "不是GROUP BY表达式"*原因:
*操作:行
错误:83列:8
你能帮我解决这个问题吗?
我需要last_name
在Oracle SQL中的employees表中显示Employee 及其佣金金额,但条件是如果遇到NULL
我需要打印"No Commission"的值.
我写的第一部分是:
select last_name, commission_pct from employees;
Run Code Online (Sandbox Code Playgroud)
但我无法得到如何NULL
用"无佣金"取代价值观.
我尝试使用NodeJS + ExpressJS + Multer上传文件,但效果不佳.
我的ExpressJS版本是4.12.3
这是我的来源
server.js:
var express = require('express'),
multer = require('multer');
var app = express();
app.use(express.static(__dirname + '/public'));
app.use(multer({ dest: './uploads/'}));
app.post('/', function(req, res){
console.log(req.body); // form fields
console.log(req.files); // form files
res.status(204).end()
});
app.get('/', function(req, res) {
res.sendFile('public/index.html');
});
app.listen(5000, function() {
console.log("start 5000");
});
Run Code Online (Sandbox Code Playgroud)
公共/ index.html的:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form method="post" enctype="multipart/form-data">
<input id="file" type="file"/>
<button type="submit">test</button>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
单击"提交"按钮时,我的NodeJS控制台日志:
"C:\Program Files\nodejs\node.exe" server.js
start 5000
{} …
Run Code Online (Sandbox Code Playgroud) 我有下表,名为Example
:
id(int 11) //not autoincriment
value (varchar 100)
Run Code Online (Sandbox Code Playgroud)
它有以下几行数据:
0 100
2 150
3 200
6 250
7 300
Run Code Online (Sandbox Code Playgroud)
请注意,id值不是连续的.
到目前为止我写了这个SQL:
SELECT * FROM Example WHERE id = 3
Run Code Online (Sandbox Code Playgroud)
但是,我不知道如何获得前一个id
值和下一个值id
......
如果id
= 3,请帮助我获得之前的值和下一个值?
PS:在我的例子中它将是:previous - 150
,next - 250
.
我正在尝试创建一个条件,其中属性'one'为零,属性'two'为1,则模型无效.但是当我做:
Model.create(:one => 1, :two => 0).valid?
Run Code Online (Sandbox Code Playgroud)
单元测试返回true
!为什么?
validates :one, :two, :presence => true, :if => :if condition_testing?
def condition_testing?
!(one == 0 && two == 1)
end
Run Code Online (Sandbox Code Playgroud) validation activerecord ruby-on-rails ruby-on-rails-3 rails-activerecord
我想知道在Rails中解析文本查询的最佳方法是什么,允许用户包含逻辑运算符?
我希望用户能够输入其中任何一个或等效的:
# searching partial text in emails, just for example
# query A
"jon AND gmail" #=> ["jonsmith@gmail.com"]
# query B
"jon OR gmail" #=> ["jonsmith@gmail.com", "sarahcalaway@gmail.com"]
# query C
"jon AND gmail AND smith" #=> ["jonsmith@gmail.com"]
Run Code Online (Sandbox Code Playgroud)
理想情况下,我们可以用括号来表示更复杂的操作顺序,但这不是必需的.
是否有宝石或图案支持这个?
有没有人知道这个嵌套的select语句有什么问题?它抱怨失踪)但我无法理解为什么它不起作用(我已经把声明的其他部分留下了)
Select
(CASE WHEN REQUESTS.grade_id = 1 THEN
(CASE WHEN ((date_completed-date_submitted)*24*60)<=30 THEN 'Yes'
ELSE 'No'
END)
ELSE CASE WHEN REQUESTS.grade_id = 2 THEN
(CASE ((date_completed-date_submitted)*24*60) <=120 THEN 'Yes'
ELSE 'No'
END)
ELSE CASE WHEN REQUESTS.grade_id = 3 THEN
(CASE ((date_completed-date_submitted)*24*60)<=14400 THEN 'Yes'
ELSE 'No'
END)
END)in_SLA
Run Code Online (Sandbox Code Playgroud)
如果我这样做
Select
(CASE WHEN REQUESTS.grade_id = 1 THEN
(CASE WHEN ((date_completed-date_submitted)*24*60)<=30 THEN 'Yes'
ELSE 'No'
END)
END) in_sla
Run Code Online (Sandbox Code Playgroud)
它工作正常!
任何帮助深表感谢
中号
对不起,我错过了嵌套案件中的呐喊
我有一个Rails 5应用程序,带有PostgreSQL 9.6数据库.
应用程序具有Report
模型,具有department_ids
数组字段,其定义schema.rb
如下:
t.integer "department_ids", default: [], array: true
Run Code Online (Sandbox Code Playgroud)
我需要编写一个返回报表行的查询,其中department_ids
列包含一组或多组给定的department_id.
我目前的解决方法是在Ruby中执行以下操作:
department_ids = [2, 5]
reports = Report.all.select do |report|
(report.department_ids & department_ids).any?
end
Run Code Online (Sandbox Code Playgroud)
然而,使用select
具有返回的缺点Array
而不是ActiveRecord::Relation
,这意味着我需要将过滤后的结果水合回到ActiveRecord::Relation
对象中.
Report.where(id: reports.map(&:id))
Run Code Online (Sandbox Code Playgroud)
我想避免这一步,并在一个查询中处理这一切.
如何用Active Record编写这样的查询?
arrays postgresql activerecord ruby-on-rails rails-activerecord
是否可以将一个方法委托给has_many
rails中的关联,并且仍然按照demeter定律保存该关联上的预加载数据?目前在我看来,你被迫选择其中一个.即:通过NOT委托保留预加载的数据,或丢失预加载的数据和委托.
示例:我有以下两个模型:
class User < ApplicationRecord
has_many :blogs
delegate :all_have_title?, to: :blogs, prefix: false, allow_nil: false
def all_blogs_have_title?
blogs.all? {|blog| blog.title.present?}
end
end
class Blog < ApplicationRecord
belongs_to :user
def self.all_have_title?
all.all? {|blog| blog.title.present?}
end
end
Run Code Online (Sandbox Code Playgroud)
注意:这User#all_blogs_have_title?
与委托方法完全相同all_have_title?
.
根据我的理解,以下内容违反了德米特定律.但是:它维护您的预加载数据:
user = User.includes(:blogs).first
User Load (0.1ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT ? [["LIMIT", 1]]
Blog Load (0.1ms) SELECT "blogs".* FROM "blogs" WHERE "blogs"."user_id" = 1
=> #<User id: 1, name: "all yes", …
Run Code Online (Sandbox Code Playgroud) ruby activerecord ruby-on-rails associations rails-activerecord
activerecord ×4
sql ×4
oracle ×3
ruby ×3
arrays ×1
associations ×1
case ×1
comparison ×1
express ×1
group-by ×1
html ×1
inner-join ×1
javascript ×1
multer ×1
mysql ×1
node.js ×1
null ×1
postgresql ×1
string ×1
validation ×1