2013-09-03 2 views
0

Я все еще пытаюсь изучить SQL, и я мог бы использовать некоторый порядок помощи по различным атрибутам. То, что я пытаюсь сделать, это получить все products и skus и заказать их сначала collection.name, затем sku.name. Однако имя коллекции и имя sku находятся в разных таблицах, которые связаны с таблицей продуктов внешним ключом.Rails и SQL - объединение нескольких столбцов таблицы

Так это будет выглядеть как этот

product.id | collection.name | product.name | sku.name 
1   | Apple   | Lateral File | A34 
3   | Beaumont  | Desk   | BT450 
2   | Beaumont  | Hutch  | BT451 
5   | Beaumont  | Drawer  | BT452 
7   | Vista   | File   | V246 
6   | Waterfall  | TV Stand  | WF899 

Любая помощь ценится

Вот мои модели:

product.rb

class Product < ActiveRecord::Base 
    attr_accessible    :name, 
           :title, 
           :features, 
           :collection_id, 
           :skus_attributes 


    belongs_to     :collection 

    has_many      :skus, dependent: :destroy 
    accepts_nested_attributes_for :skus, reject_if: lambda { |a| a[:title].blank? }, allow_destroy: true 
end 

коллекция. rb

class Collection < ActiveRecord::Base 
    attr_accessible :name, 
        :title, 
        :description 

    has_many :products 
end 

sku.rb

class Sku < ActiveRecord::Base 
    default_scope order('skus.id ASC') 

    attr_accessible    :name, 
           :title, 
           :product_id 

    belongs_to     :product 

end 

ответ

0

Чтобы получить результат, похожий на тот, который вы публикуемую выше, вы можете попробовать что-то вроде:

Product.joins(:collection, :skus) 
     .select('products.id, collections.name, products.name, skus.name') 
     .order('collections.name ASC, skus.name ASC') 
+0

А что это будет? –

0

Вы не собираетесь получить, что точный результат в Rails, потому что это не то, что Rails для. Однако, если вы хотите, чтобы получить все заказанное название коллекции и имя СКА, это путь

Product.joins(:collection, :skus).order('collections.name, skis.name') 

, но так как в вашей модели продукта может иметь много артикулов Я не совсем уверен, что результат этого запроса.

+0

Что делать, если я просто пропустить skus.name и справедливый порядок по collections.name? –

Смежные вопросы