比如這個查詢: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