2013-02-10 2 views
1

Rhomobile에서 왼쪽 결합을 수행 할 수 있습니까?Rhomobile에서 왼쪽 결합 수행

나는 하나의 관계가 많은 (즉, 각 PriceGroup과 PriceLookup 레코드가 많은) PriceGroups, PriceLookup 모델을 가지고 있습니다.

belongs_to :price_group_code, 'PriceGroups' 

다음은 무엇입니까 :

나는 간단한 SQL 왼쪽 나는 내가 price_lookup 모델이 추가 한

SELECT * FROM PriceLookup 
LEFT JOIN PriceGroups ON PriceLookup.price_group_code=PriceGroups.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 

나는 나 자신이 선택을하고 그들에게 가입하실 수 있습니다 알고 있지만 아직 (생성)이

답변

2

기본 PropertyBags가 아닌 FixedSchema로 RhoMobile 모델을 만들어야합니다.

그렇지 않으면 당신은 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) 
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")