我正在嘗試更改我的sqlite數據庫與房間庫。我有點困惑與左連接查詢。android左連接與房間查詢
我已經用sqlite實現了它,但不知道如何才能達到同樣的房間?
這裏是我創建表:
第一個表:通知
db.execSQL("CREATE TABLE IF NOT EXISTS $TABLE_NAME ($COLUMN_ID INTEGER PRIMARY KEY, $ICON TEXT, $TITLE INTEGER," +
" $DATE INTEGER, $TYPE INTEGER,$URL TEXT, $MESSAGE INTEGER, FOREIGN KEY($TITLE) REFERENCES ${TableNotificationsTrans.getTableName(this)}(id)," +
"FOREIGN KEY($MESSAGE) REFERENCES ${TableNotificationsTrans.getTableName(this)}(id))")
第二張表:Notification_Trans
db.execSQL("CREATE TABLE IF NOT EXISTS $TABLE_NAME ($COLUMN_ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, $COLUMN_EN TEXT, $COLUMN_GU TEXT, $COLUMN_HI TEXT)")
我在做什麼是我保存通知中通知表,但其名稱和說明將以特定語言存儲在notification_trans中。
查詢實現
DatabaseHelper.database!!.rawQuery("SELECT A.$COLUMN_ID, A.$ICON, N.${language.toLowerCase()} $TITLE, A.$DATE, A.$TYPE, A.$URL, M.${language.toLowerCase()} $MESSAGE FROM $TABLE_NAME A LEFT JOIN NotificationsTrans N ON A.$TITLE = N.id LEFT JOIN NotificationsTrans M ON A.$MESSAGE = M.id ORDER BY $DATE DESC LIMIT $pageNum*10, 10", null)
問題
How can I achieve same with room?
編輯
我的應用程序是多語言的應用程序,在這裏我得到通知標題與特定的語言,l ike印地文或古吉拉特語。我在通知表中存儲通知詳細信息,同時標題notification_trans。
NotificationTrans有id,英文,印地文,古吉拉特語的專欄。
當用戶詢問古吉拉特語時,我正在從notificationTrans的列gujarati中重新獲取通知標題。
我可以這樣做,在sqlite中。
但現在我想它
房
如果您有靜態查詢,您可以在Room中使用它,就像您在SQLite中使用它一樣。在你的情況下,你正在使用字符串插值來生成查詢,在這種情況下Room不能幫你。 – CommonsWare