2016-10-11 47 views
2

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

我有3列的产品表:

id, Name and Category 

,而且我有3列数据表:

id, Name, products_id(F.K) 

现在,假设我有我的产品表中的一个条目与值

(1, "iPhone 6S", "Mobiles") 

,并在数据表中我有名字的多个条目:

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

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

在下面的代码中,我正在更新与匹配产品名称的产品名称相同的产品名称。通过这样做我得到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加上前面products_id。我不希望它放在iPhone 6s Plus的前面。任何其他的做法也可能有所帮助。非常感谢!

+1

Data.where( “名REGEXP?”, 'your_regex_here') – bkunzi01

回答

0

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

name = Product.where(id: 1).pluck(:Name) 
Data.where(Name: name).updated_all(products_id: 1) 
+0

这将匹配满弦 “iPhone 6S” 只是,在某些条目我有一个像 “iPhone 6S 16GB” –