2013-03-02 56 views
1

我想算total no of Products特定的購物清單,然後根據其在Shopping List table。我的ID創建產品表如何計算一個表中的值,然後在另一個表中顯示相同的值?

我的購物清單表是一個和shopping_list參考顯示total count of products該購物清單如下: -

id serial NOT NULL, 
    shopping_list_name character varying(255), 
    shopping_list_status character varying(255) DEFAULT 'OPEN'::character varying, 
    total_items character varying(255) DEFAULT 0, 
    created_at timestamp without time zone NOT NULL, 
    updated_at timestamp without time zone NOT NULL, 
    deleted integer NOT NULL DEFAULT 0, 
    CONSTRAINT shopping_lists_pkey PRIMARY KEY (id) 

我的產品表如下: -

id serial NOT NULL, 
    shopping_list_id integer NOT NULL, 
    product_name character varying(255) DEFAULT 'null'::character varying, 
    product_category character varying(255), 
    quantity integer, 
    status character varying(255) DEFAULT 'OPEN'::character varying, 
    deleted integer NOT NULL DEFAULT 0, 
    CONSTRAINT products_pkey PRIMARY KEY (id) 

誰能請幫我: -

+2

聽起來像你只是想通過shopping.id從購物內連接產品(...)中選擇shopping.id,count(product.id),sum(product.quantity) – 2013-03-02 07:12:46

+1

@CraigRinger這正是我想要做的。可以幫助你的細節 – Rockking 2013-03-02 12:47:19

+0

這幾乎*是細節。如果你的意思是「你可以把它寫成一個ActiveRecord查詢」,那麼不,對不起,我不做ActiveRecord,但是你可以把它翻譯回SQL。 – 2013-03-02 18:19:49

回答

1

所以,你將有類似

class ShoppingList < ActiveRecord::Base 
    has_many :products 
end 

class Product < ActiveRecord::Base 
    belongs_to :shopping_list 
end 

隨後爲了獲得產品的編號爲購物清單

@my_shopping_list.products.count 

而得到的數量

@my_shopping_list.products.sum(:quantity) 

你可以擁有某種緩存所以可以說你的ShoppingList中有一個名爲products_quantity的整數字段,默認情況下它是0(默認情況下,它不是零)。

然後在您的產品型號,你可以這樣做

class Product < ActiveRecord::Base 
    after_create :update_shopping_list 

    def update_shopping_list 
    shopping_list.update_attribute(:products_quantity, shopping_list.products_quantity + self.quantity) 
    end 
end 

在這種情況下,你不必執行查詢SELECT SUM(數量)FROM產品哪裏shopping_list_id =?

我不確定我是否回答你的第二個問題,但是如果你有更多問題或者你想問別的問題,請告訴我。

+1

我可以直接在數據庫中更改數量值@rorra – Rockking 2013-03-02 07:16:56

+1

,感謝您的幫助。 我按照你所描述的方式實施了我的購物車,它正在工作 – Rockking 2013-03-07 04:11:42

相關問題