如何计算一个表中的值,然后在另一个表中显示相同的值?

时间:2013-03-02 06:43:12

标签: sql ruby-on-rails database postgresql

我想计算特定购物清单的total no of Products,然后根据total count of products中的ID显示该购物清单的Shopping List table。我已经为shopping_list创建了一个参考在产品表中

我的购物清单表格如下: -

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)

任何人都可以帮助我: -

1 个答案:

答案 0 :(得分: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(确保默认情况下为0,而不是nil)。 / p>

然后在您的产品型号上,您可以执行类似

的操作
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 PRODUCTS WHERE shopping_list_id =?

我不确定我是否回答了你的第二个问题,但如果你有更多问题,或者你是否想要提出其他问题,请告诉我。