是否无法在Rhomobile中执行左连接?
我有PriceGroups,PriceLookup的模型,它们具有1-many关系(即每个PriceGroup并且有许多PriceLookup记录)。
我需要做一个简单的SQL Left Join,所以我从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
我知道我可以做两个选择并自己加入,但这是一个非常废话的方式
答案 0 :(得分:2)
您需要将RhoMobile模型创建为FixedSchema,而不是使用默认的PropertyBags。
否则,您在SQLite中没有真正的表,但是您正在使用实现键值存储的特殊objectValues表: http://docs.rhomobile.com/rhodes/rhom#fixed-schema
示例:
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)
答案 1 :(得分:0)
如果尚未初始化(创建)表PriceGroups,则可能会发生这种情况。如果模型类不存在,则会在加载模型类时创建表。 对于您的情况,只需调用模型类,这将加载它并在必要时创建表。
PriceGroups; #Only for create the table
PriceLookup.find_by_sql("SELECT * FROM PriceLookup LEFT JOIN PriceGroups on PriceLookup.price_group_code=PriceGroups.code")