Tag: sql

在postgresql …查询中加入两个单独的查询…(可能或不可能)

我在postgresql查询中返回第一个X记录并获得了一些很好的帮助, 该查询具有我遇到的问题并尝试尽可能地优化的独特字段 (尽管我通常不是很喜欢前加载优化,这是一种独特的情况)。 想象一下应用中的三个实体: User Post Instance # An instance is just a reference to a post 字段看起来像这样: User id Post id user_id name Instance id user_id post_id helped_by_user_id 要求 : 返回10个实例,其中: user_id不等于3 post_id是独一无二的 post_id没有其他实例,help_by_user_id为3 编辑: 我在http://sqlfiddle.com/#!10/7a324/1/0上为此创建了一个SQLFiddle。 为了记录,我使用Ruby 1.9.3,Rails 3.2.13和Postgresql(Heroku)

ON DUPLICATE KEY UPDATE – 添加到现有值

我有SQL(MySQL 5.x)查询,如: INSERT INTO table (val1), ON DUPLICATE KEY UPDATE `val1` = VALUES(`val1`) 这很好用。 现在我需要用VALUES( val1 )+ ruby​​变量的总和来更新它。 INSERT INTO table (val1), ON DUPLICATE KEY UPDATE `val1` = VALUES(`val1`) + #{ruby_variable} 抛出一个错误。 (Ruby这里只是一个例子,实际上我需要求和VALUES( val1 )+整数) 怎么做?

查找涉及STI和父子关系的“重复”记录的解决方案

我有一个名为Buyable的基于STI的模型,有两个模型Basket和Item。 这里可购买的关注属性是: shop_week_id LOCATION_ID PARENT_ID 篮子和物品之间有亲子关系。 对于篮子,parent_id总是为零,但是通过引用唯一的篮子ID,项目可以属于篮子。 因此,篮子有很多物品,而物品属于一个篮子。 我需要一个篮子模型的方法: 如果表中有任何其他具有相同数量和类型的项目的篮子,则返回true。 当项目共享相同的shop_week_id和location_id时,它们被认为是相同的类型。 例如: 给出一个篮子(uid = 7)有2个项目: 项目#1 id = 3 shop_week_id = 13 location_id = 103 parent_id = 7 项目#2 id = 4 shop_week_id = 13 location_id = 204 parent_id = 7 如果表中有任何其他篮子包含正好2个项目,则返回true,其中一个项目具有shop_week_id = 13且location_id = 103,另一个项目具有shop_week_id = 13和location_id = 204.否则返回false。 你会怎么解决这个问题? 这是不言而喻的,但我正在寻找一个非常有效的解决方案。

ActionView :: Template :: Error(PG :: UndefinedFunction:ERROR:运算符不存在:整数~~未知

我从MySQL切换到PostgreSQL用于Heroku。 现在我的搜索不起作用。 无法弄清楚操作员有什么问题。 ActionView :: Template :: Error(PG :: UndefinedFunction:ERROR:运算符不存在:整数~~未知。 2014-11-11T19:59:58.082607+00:00 app[web.1]: Processing by AllListingsController#search_listings as JS 2014-11-11T19:59:58.105074+00:00 app[web.1]: 4: 2014-11-11T19:59:58.102205+00:00 app[web.1]: ^ 2014-11-11T19:59:58.105066+00:00 app[web.1]: HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts. 2014-11-11T19:59:58.105083+00:00 app[web.1]: app/controllers/all_listings_controller.rb:14:in `search_listings’ 2014-11-11T19:59:58.110318+00:00 heroku[router]: at=info method=GET path=”/search_listings?q=500&_=1415735994648″ host=subleasy.herokuapp.com request_id=24a21078-d3fd-4bce-9afb-bfc9d976c0a7 fwd=”50.247.32.153″ […]

查询忽略时间戳日期的时间范围

我正在尝试查询我的rails数据库(Postgres)中的购买表,我想查询时间范围。 例如,我想知道在所有日期的下午2点到下午3点之间进行了多少次购买。 此表中有一个created_at列,但我没有看到如何在不搜索特定日期的情况下完成此操作。 我试过了: Purchases.where(“created_at BETWEEN ? and ?”, Time.now – 1.hour, Time.now) 但这最终只会在那些时候搜索今天的日期。

sails注入的Rails制动器警告

我的模型中有一个范围: scope :assigned_to_user, ->(user) { task_table = UserTask.table_name joins(“INNER JOIN #{task_table} ON #{task_table}.user_id = #{user.id} AND (#{task_table}.type_id = #{table_name}.type_id) AND (#{task_table}.manager_id = #{table_name}.manager_id) “) } 因此,在运行制动器报告后,我收到此警告: assigned_to_user | SQL Injection | Possible 所以我尝试了以下内容: scope :assigned_to_user, ->(user) { task_table = UserTask.table_name joins(ActiveRecord::Base::sanitize(“INNER JOIN #{task_table} ON #{task_table}.user_id = #{user.id} AND (#{task_table}.type_id = #{table_name}.type_id) AND (#{task_table}.manager_id = #{table_name}.manager_id) […]

这个SQL注入如何工作? 需要说明

我正在学习RoR /数据库,这个话题让我特别困惑。 在Agile Development with Rails 4一书中,他们举例说明了一个名为Dave的条目的所有订单列表: pos = Order.where(“name = ‘Dave’ and pay_type = ‘po”) 这本书继续说你永远不想做这样的事情: name = params[:name] pos = Order.where(“name = ‘#{name}’and pay_type = ‘po'”) 相反,你应该这样做: name = params[:name] pos = Order.where([“name = ? and pay_type = ‘po'”,name]) 我理解,SQL注入是一个概念,但有一些细节让我感到困惑。 对于初学者来说,SQL注入到底是如何工作的一种语法。 我知道,如果你插入一个像第一个例子那样的外部表单参数,有人可以删除一个表/数据库但是如何? 让我们说你有这个: name = params[:name] #DROP DATABASE database_name pos = Order.where(“name = […]

什么是使用数据类型的例子 – 参考文献

我想知道数据类型引用以及如何/为什么在网站上使用它的一些示例。 如果使用Ruby-on-Rails时它们有所不同,我会为了以防万一而标记它。 我是编程的新手,用外行的术语来解释所有内容会有很大的帮助,所以我可以慢慢地建立自己的计算机头衔。 感谢帮助我的麻烦,谢谢。

导轨 – 在导轨中找到条件4

我最近将我的rails升级到Rails 4.1.6。 此查询用于工作: @user = User.find(:all, :conditions => { :name => ‘batman’ }) 现在我收到此错误消息: Couldn’t find all Users with ‘id’: (all, {:conditions=>{:name=>”batman”}}) (found 0 results, but was looking for 2) 当我检查日志时,我可以看到rails正在尝试执行完全不同的查询: User Load (0.4ms) SELECT “users”.* FROM “users” WHERE “users”.”id” IN (‘all’, ‘— :conditions: :name: batman ‘) 看起来,它试图让所有用户都拥有ID“all”和“{:conditions => {:name =>”batman“}}”。 请帮忙。 更新: 我背后真正的问题是我想要一个特定的用户并添加他的汽车,只有蓝色的汽车。 例如,这是我的查询,用户ID是20。 […]

帮助在Ruby on Rails中对记录进行排序

我有一个包含两列的分数表: user_id和score user_id得分 1 200 1 120 1 230 2 300 2 345 3 100 3 40 4 350 4 500 …… Score.order(‘score DESC’).limit(3)列出前3个得分。 相反,我如何获得前3个分数,其中每个用户只获得列表中的一个位置(他们的最高分)。 上表中的高分将是: user_id:4分:500 user_id:2得分:345 user_id:1得分:230 谢谢! 蒂姆