在Rhomobile中执行左联接



是否无法在Rhomobile中执行左联接?

我有模型PriceGroups,PriceLookup,它们有一个一元关系(即每个PriceGroup都有许多PriceLookup记录)。

我需要做一个简单的SQL左联接,这样我就可以从PriceGroups表中获得所需的信息

SELECT * FROM PriceLookup 
LEFT JOIN PriceGroups ON PriceLookup.price_group_code=PriceGroups.code

我已将此添加到price_lookup模型中:

  belongs_to :price_group_code, 'PriceGroups'

以下是我在Rhomobile 中尝试的内容

PriceLookup.find_by_sql("SELECT *
FROM PriceLookup
LEFT JOIN PriceGroups on PriceLookup.price_group_code=PriceGroups.code")

但我得到错误:

Error: could not prepare statement: 1; Message: no such table: PriceGroups

我知道我可以自己做两个选择并加入它们,但这是一种非常糟糕的方法

您需要将RhoMobile模型创建为FixedSchema,而不是使用默认的PropertyBags。

否则,您在SQLite中没有真正的表,但您使用的是实现键值存储的特殊objectValues表:http://docs.rhomobile.com/rhodes/rhom#fixed-模式

示例:

dbPT = ::Rho::RHO.get_src_db('PriceLookup')
sql = "SELECT * FROM PriceLookup LEFT JOIN PriceGroups ON PriceLookup.price_group_code=PriceGroups.code"
lines = dbPT.execute_sql(sql)

如果表PriceGroups尚未初始化(创建),则可能发生这种情况。表是在加载模型类时创建的,如果它们不存在的话。对于您的情况,只需调用模型类,这将加载它并在必要时创建表。

PriceGroups; #Only for create the table
PriceLookup.find_by_sql("SELECT * FROM PriceLookup LEFT JOIN PriceGroups on PriceLookup.price_group_code=PriceGroups.code")

相关内容

  • 没有找到相关文章