比如这个查询:Mysql问题:有没有像IN ALL查询?
SELECT `variants`.*
FROM `variants` INNER JOIN `variant_attributes`
ON variant_attributes.variant_id = variants.id
WHERE (variant_attributes.id IN ('2','5'))
和变异的has_many variant_attributes
什么其实我想要做的就是找到它的变体既有的变体与ID = 2和5属性,这可能与MySQL?奖金的问题,有没有一种快速的方式来使用Ruby on Rails,或许可以使用SearchLogic?
解决方案
谢谢Quassnoi为您提供的查询,即完美。
要在Rails上使用,我使用了下面的named_scope,我认为这对初学者来说更容易理解。
基本上named_scope会返回{:from => x,:conditions => y}并且上面的行用于设置y变量。
named_scope :with_variant_attribute_values, lambda { |values|
conditions = ["(
SELECT COUNT(*)
FROM `variant_attributes`
WHERE variant_attributes.variant_id = variants.id
AND variant_attributes.value IN (#{values.collect { |value| "?" }.join ", "})
) = ?
"]
conditions = conditions + values + [values.length]
{
:from => 'variants',
:conditions => conditions
}}
谢谢,这个作品!请在我的帖子下面阅读我在Rails中使用的named_scope。 – jaycode 2010-05-09 14:58:47