从数据库中获取特定数据

时间:2016-10-11 22:18:52

标签: mysql ruby-on-rails database database-design

我在从数据库中获取正确的数据时遇到了问题。

我有一个包含3列的PRODUCTS表:

id, Name and Category 

AND,我有一个包含3列的DATA表:

id, Name, products_id(F.K)

现在,假设我的Products表中有一个值为

的条目
(1, "iPhone 6S", "Mobiles") 

AND,在数据表中我有多个名称条目:

iPhone 6s 16GB, 
iPhone 6s 32GB, 
iPhone 6s Plus 16GB, 
iPhone 6s Plus 32GB 

等等。现在我只需要iPhone 6s,而不是iPhone 6s Plus

在下面的代码中,我正在更新products_id,它与名称为DATA的产品名称相匹配。通过这样做,我得到了iPhone 6siPhone 6s Plus

我只想要iPhone 6s

@P1 = Product.where(id: 1).pluck(:Name)
@arr = @P1[0].split
Data.where("Name like ? AND Name like ? AND Name like ? AND Name like ? ", 
            "%#{@arr[0]}%", 
            "%#{@arr[1]}%", 
            "%#{@arr[2]}%", 
            "%#{@arr[3]}%").update_all(products_id:1)

现在使用上面的代码我在iPhone 6s和iPhone 6s Plus前面获得了products_id。我不希望它放在iPhone 6s Plus前面。任何其他方法也可以提供帮助。非常感谢!

1 个答案:

答案 0 :(得分:0)

如果您想完全匹配名称,请搜索完整字符串而不是类似字符。

 name = Product.where(id: 1).pluck(:Name)
 Data.where(Name: name).updated_all(products_id: 1)
相关问题