- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有一个包含列(id、tile、price、description、shop_id、timestamps)的表“Products”列 price 和 shop_id 是动态的。列的其余部分是静态的。
还有一个包含列(id、名称、时间戳)的“商店”表。
商店有很多产品。产品可以在所有商店和产品之间迁移。shop_id 可以为空。
我想了解一家商店有哪些产品的历史记录。例如,昨天商店有产品及其价格。前天商店有其他产品和/或其他价格。所以我想要类似的东西
'ShopHistory'(id, data, date, timestamps),其中data为hstore或json。所以它应该有像 { key: value} 这样的散列,其中 key 是产品的 id,value 是它的当前价格。但我想将数据列与产品一起加入,以了解产品的标题和描述。我不知道该怎么做。看起来 ShopHistory 是商店和产品之间的连接表,但所有信息都存储在一行中。
我们能帮我吗?也许任何人都知道实现所有这些的更好方法。欢迎任何想法和文章。
谢谢!
附言我使用 rails(ActiveRecord) 和 PostgreSQL,但是只知道 Postgres 的人的回答对我也有好处。
最佳答案
我明白你的意图,但坦率地说,我认为这不会以一种直接、简单的方式为你解决。 (根据经验,在 ruby 和 rails 中,如果它不是直截了当的,那么您可能没有按照 ruby/rails 的方式进行操作)。
为什么我知道这个?因为我之前尝试过用 hstore 做与您想做的事情非常相似的事情,但没有成功:
Can I use ActiveRecord relationships with fields from an Hstore?
作为更好的解决方案(最终对我有用),请考虑制作一个中间模型来匹配 Shop
s 至 Product
s,(也许你想将这个中间模型命名为类似 Shop_product
的名称,带有连接表 shops_products
,但名称由你决定)然后使用带有 has_many
的中间模型连接两个模型through:
此处详述的关系:
http://edgeguides.rubyonrails.org/association_basics.html#the-has-many-through-association
类似于:
class Shop << ActiveRecord::Base
has_many :shop_products
has_many :products, through: :shop_products
end
class ShopProduct << ActiveRecord::Base
belongs_to :shop
belongs_to :product
end
class Product << ActiveRecord::Base
has_many :shop_products
has_many :shops, through: :products
(有关如何在链接中创建所有这些的更多信息,我建议阅读)
现在您将建立一个关联,因此您可以获得:
Shop.find_by_id(1).products
Product.find_by_id(1).shops
最后,我认为你可以使用 ActiveRecord scopes 来解决你需要解决的第二个计算问题(即找到过去每天的价格)。
理想情况下,作用域允许您进行如下查询:
Shop.products.active_yesterday
class Product << ActiveRecord::Base
scope active_yesterday -> { where('updated_at BETWEEN ? AND ?', 1.day.ago.beginning_of_day, 1.day.ago.end_of_day) }
has_many :shop_products
has_many :shops, through: :shop_products
end
我的所有代码都没有生产就绪,也没有经过测试,但我认为我的示例和链接应该足以让您走上正确的道路。
如果您需要更多帮助,请告诉我,我会尽力提供帮助。
关于sql - Rails Postgres hstore 或 jsonb 存储多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37861059/
Postgres 新手,使用 v9.3,想利用 hstore。 当我尝试连接两个 hstore 值时,出现奇怪的错误: SELECT p.properties->'name' || p.propert
我有一个定期用新数据更新的汇总表。其中一列是 hstore 类型。当我更新新数据时,如果键存在,我想将键的值添加到键的现有值,否则我想将对添加到 hstore。 现有数据: id sum
我在数据库中有一个现有模型。我想用一个 hstore 字段来增强它。我安装了 hstore Postgres 扩展,django-hstore 应用程序,更改了 django 项目中的适当设置: SO
我正在查询 pgsql 数据库以查找在 hstore 字段中具有特定键的行: select DISTINCT from (select id, exist(data, ‘exercise_quiz’)
我通过以下方式在我的 MacOS X 上安装了 RubyOnRails 4.1.4 和 PostgreSQL: brew install postgresql 当我尝试迁移这个时: CREATE EX
当我运行 Django 服务器时,出现以下错误: class HStoreDescriptor(models.fields.subclassing.Creator): AttributeErr
我需要让 Hstore 为我正在处理的 Rails 应用程序工作。我正在运行 Linux Mint 18 和 psql(9.6.1,服务器 9.5.5)和 postgresql-contrib 9.6
在我的实际项目中,我正沉浸在“大数据”问题中。我们需要存储一个大数据库,其中读取性能比写入更重要(数据更改最少且受控)。 有数百万个寄存器,每个寄存器都有很多键/值信息。 我正在测试 noSQL 数据
我正在使用 Postgresql V 9.1: SELECT 'k=>name, v=>Nava Ratna Secondary School'::hstore; 此代码返回错误: ERROR: S
我想知道在 PostgreSQL 中是否可以遍历当前函数的所有可用输入参数并将这些参数 (key=>value) 附加到 hstore 变量。 hstore-key = 给定输入参数/参数的名称...
我在这里问了类似的问题:hstore value with space。并由用户解决:Clodoaldo Neto。现在我遇到了下一个包含单引号的字符串的情况。 SELECT 'k=>"name",
假设我有一个博客数据库,其中 posts 表将标签存储在 hstore 中。 键代表标签 ID,值是标签名称。 例如:1=>'测试', 56=>'SQL', 42=>'Java' 我想在带有标签过滤器
我发现这个查询: SELECT properties->'somekey' IS NOT DISTINCT FROM 'someValue' FROM myTable; 在 PostgreSQL 9.
我正在使用 PostgreSQL 9.4。我需要将子查询转换为 hstore。我有这个查询:select code, value_string from dir。它返回 code | value_s
我在决定使用哪种方法时遇到了一些麻烦。 我有几个实体“类型”,我们称它们为 A、B 和 C,它们共享一定数量的属性(大约 10-15 个)。我创建了一个名为 ENTITIES 的表,并为每个公共(pu
我想在 hstore 列中的特定键上创建唯一索引或约束(如果该键存在)。我希望能在另一个问题的某处找到答案: Practical limitations of expression indexes i
当我在不传递任何参数的 Django 模型中使用 hstore.DictionaryField() 并在 Djano 管理中注册我的模型时,我可以在管理界面中即时创建新的键值对行。 当我在模式模式下使
尝试将 hstore (postgreql) 中的值插入到更通用的表中 在我的汽车表中,我有这些字段 id fields (hstore) 我的存储表,我有这些字段 id key value car_
我想知道是否有人知道这个在 PostgreSQL 9.2 中的 hstore 列上的简单查询出了什么问题 查询在 pgAdmin 中运行 select attributeValue->"CODE_MU
假设我有一个定义如下的表: CREATE TABLE test ( values HSTORE NOT NULL ); 想象一下,我插入了几条记录,结果如下: values -----------
我是一名优秀的程序员,十分优秀!