2016-07-08 45 views
1

私のプロジェクトではFM​​Databaseをレルムに使用しています。しかし、私はこのようなSQLクエリに問題があります:レルムで結合クエリを使用する

SELECT a.areaId, a.areaName, orderId, t.accountId, t.accountNo, 
     amount, customerId, customerName, customerCategoryId, 
     customerCategoryName, i.dispStatus, t.locationId, 
     locationName, totalAmount, orderCode, orderFullName, 
     t.tableId, t.tableName, tableTypeId, productAmount 
FROM TableTable t 
LEFT JOIN AreaTable a ON t.areaId = a.areaId 
LEFT OUTER JOIN OrderTable i ON t.tableId = i.tableId 
          AND (i.dispStatus='4' OR i.dispStatus='2' OR i.dispStatus='5') 
WHERE t.accountId = %@ AND t.locationId = %@ 

私はRealm構文に変換する方法がわかりません。

AreaModel:

@property (strong, nonatomic) NSString *areaId; 
@property (strong, nonatomic) NSString *areaName; 
@property (assign, nonatomic) NSString *position; 
@property (strong, nonatomic) NSString *dispStatus; 
@property (strong, nonatomic) NSString *isDefault; 
@property (strong, nonatomic) NSString *locationId; 
@property (strong, nonatomic) NSString *accountId; 
@property (strong, nonatomic) NSString *accountNo; 
@property (strong, nonatomic) NSString *regDttm; 
@property (strong, nonatomic) NSString *regUser; 
@property (strong, nonatomic) NSString *langId; 

するTableModel:

@property (strong, nonatomic) NSString *tableId; 
@property (strong, nonatomic) NSString *areaId; 
@property (strong, nonatomic) NSString *tableTypeId; 
@property (strong, nonatomic) NSString *tableName; 
@property (strong, nonatomic) NSString *available; 
@property (strong, nonatomic) NSString *topPosition; 
@property (strong, nonatomic) NSString *leftPosition; 
@property (strong, nonatomic) NSString *dispStatus; 
@property (strong, nonatomic) NSString *isDefault; 
@property (strong, nonatomic) NSString *locationId; 
@property (strong, nonatomic) NSString *accountId; 
@property (strong, nonatomic) NSString *accountNo; 
@property (strong, nonatomic) NSString *regDttm; 
@property (strong, nonatomic) NSString *regUser; 
@property (strong, nonatomic) NSString *updDttm; 
@property (strong, nonatomic) NSString *updUser; 

がOrderModel:

@property (strong, nonatomic) NSString *orderId; 
@property (strong, nonatomic) NSString *orderCode; 
@property (strong, nonatomic) NSString *orderType; 
@property (strong, nonatomic) NSString *orderName; 
@property (strong, nonatomic) NSString *orderDate; 
@property (strong, nonatomic) NSString *orderUser; 
@property (strong, nonatomic) NSString *orderFullName; 
@property (strong, nonatomic) NSString *customerCode; 
@property (strong, nonatomic) NSString *customerPhone; 
@property (strong, nonatomic) NSString *orderDescription; 
@property (strong, nonatomic) NSString *paymentType; 
@property (strong, nonatomic) NSString *updDttm; 
@property (strong, nonatomic) NSString *updUser; 
@property (strong, nonatomic) NSDecimalNumber *areaId; 
@property (strong, nonatomic) NSDecimalNumber *tableId; 
@property (strong, nonatomic) NSString *isDirty; 
@property (strong, nonatomic) NSString *locationPhone; 
@property (strong, nonatomic) NSString *reduction; 
@property (strong, nonatomic) NSDecimalNumber *accountId; 
@property (strong, nonatomic) NSString *accountNo; 
@property (strong, nonatomic) NSString *regUser; 
@property (strong, nonatomic) NSString *regDttm; 
@property (strong, nonatomic) NSDecimalNumber *locationId; 
@property (strong, nonatomic) NSString *locationName; 
@property (strong, nonatomic) NSDecimalNumber *customerId; 
@property (strong, nonatomic) NSString *customerName; 
@property (strong, nonatomic) NSDecimalNumber *customerCategoryId; 
@property (strong, nonatomic) NSString *customerCategoryName; 
@property (strong, nonatomic) NSString *dispStatus; 
@property (strong, nonatomic) NSString *invoiceDate; 
@property (strong, nonatomic) NSDecimalNumber *quantity; 
@property (strong, nonatomic) NSDecimalNumber *productAmount; 
@property (strong, nonatomic) NSDecimalNumber *wholesaleAmount; 
@property (strong, nonatomic) NSDecimalNumber *productReductionAmount; 
@property (strong, nonatomic) NSDecimalNumber *totalAmount; 
@property (strong, nonatomic) NSDecimalNumber *reductionAmount; 
@property (strong, nonatomic) NSDecimalNumber *reductionPercent; 
@property (strong, nonatomic) NSDecimalNumber *amount; 
@property (strong, nonatomic) NSDecimalNumber *cashAmount; 
@property (strong, nonatomic) NSDecimalNumber *changeAmount; 
@property (strong, nonatomic) NSDecimalNumber *profitAmount; 
@property (strong, nonatomic) NSDecimalNumber *loyaltyPoints; 
@property (strong, nonatomic) NSString *channelType; 
@property (strong, nonatomic) NSString *deviceType; 
@property (strong, nonatomic) NSDecimalNumber *storeId; 
@property (strong, nonatomic) NSString *storeName; 
@property (strong, nonatomic) NSString *invoiceFullName; 
@property (strong, nonatomic) NSString *invoiceCode; 
@property (strong, nonatomic) NSString *invoiceUser; 
@property (strong, nonatomic) NSString *reductionDisplay; 
@property (strong, nonatomic) NSString *areaName; 
@property (strong, nonatomic) NSString *tableName; 
@property (strong, nonatomic) NSString *accessType; 
@property (strong, nonatomic) NSString *invoiceType; 
@property (strong, nonatomic) NSDecimalNumber *payAmount; 
@property (strong, nonatomic) NSDecimalNumber *paymentByCash; 
@property (strong, nonatomic) NSDecimalNumber *paymentByVoucher; 
@property (strong, nonatomic) NSDecimalNumber *loanAmount; 
@property (strong, nonatomic) NSString *paymentStatus; 
@property (strong, nonatomic) NSString *customerIsDefault; 
@property (strong, nonatomic) NSDecimalNumber *taxAmount; 
@property (strong, nonatomic) NSDecimalNumber *preTaxAmount; 
@property (strong, nonatomic) NSString *taxDescription; 
@property (strong, nonatomic) NSString *refTransactionCode; 
@property (strong, nonatomic) NSString *username; 
@property (strong, nonatomic) NSString *userFullName; 
@property (strong, nonatomic) NSString* receiveIssue; 
+0

Realmモデルのクラスの外観を教えてください。 – bdash

+0

私はモデルで私の質問を編集しました。 –

答えて

2

レルムがOであるので間接的にプライマリ・キーと外部キーを使用するのではなく、リレーショナル・データベースではなくデータベースrelationships between objects are expressed directlyを使用します。このような

@property (nonatomic) Area *area; 

関係は、クエリで使用することができます。このような関係を使用することは妨げないことを

[Table objectsWhere:@"area.name = 'Some Area'"] 

注たとえば、あなたTableクラスは、それが使用してAreaを持っていることを明示していますインスタンスに一意の識別子を与えます。固有の識別子は、ローカルオブジェクトをWebサービス上のオブジェクトにマッピングする場合や、ローカルアプリケーションのスレッド間でオブジェクトを渡す場合に役立ちます。

関連する問題