注:直接結合クエリでは再現されないパフォーマンスの問題があったため、リレーションを使用できません。
追加target user
してからgroup user
対応するまで
LEFT JOIN chat_user ON chat_user.chat_user_id = message_item.messages_target_user
LEFT JOIN chat_user ON chat_user.chat_user_id = message_item.messages_from_group_user
それはうまくいきました。しかし、追加した後、クエリでこれらのプレフィックスをマップする方法がわかりません。
class ReadMessageEntity(
@Embedded
var message: MessageEntity,
@Embedded
var block: BlockEntity?,
@Embedded
var user: ChatUserRelationEntity,
@Embedded(prefix = "target_user_")
var targetUser: ChatUserEntity?,
@Embedded(prefix = "from_group_user_")
var fromGroupUser: ChatUserEntity?
)
これは私が照会しようとしているものです:
@Transaction
@Query("""
SELECT * FROM message_item
LEFT JOIN block_item ON block_item.block_message_id = message_item.message_local_id
LEFT JOIN chat_user_relation ON chat_user_relation.chat_user_id = message_item.message_user_id
LEFT JOIN chat_user ON chat_user.chat_user_id = message_item.messages_target_user
LEFT JOIN chat_user ON chat_user.chat_user_id = message_item.messages_from_group_user
WHERE message_item.message_chat_id = :chatId
ORDER BY message_created_at ASC
""")
fun getMessagesByChat(chatId: String): Single<List<ReadMessageEntity>>
エラー:
e:エラー:クエリに問題があります:[SQLITE_ERROR] SQLエラーまたはデータベースがありません(あいまいな列名:main.chat_user.chat_user_id)
前述のように、Moayad.AlMoghrabiはテーブルエイリアスを使用する必要があります。だから私はに名前を変更LEFT JOIN chat_user
しましたLEFT JOIN chat_user target_user
。chat-userとtarget_userの間にASがないことに注意してください。(私の間違いは私がそれをそこに置こうとしたことでした)。chat_userのプレフィックスは正しく機能するため、プレフィックスの動作はまだ謎ですが、ChatUserRelationEntityにプレフィックスを設定すると、不明な列エラーが発生します。
SELECT * FROM message_item
LEFT JOIN block_item
ON block_item.block_message_id = message_item.message_local_id
LEFT JOIN chat_user_relation
ON chat_user_relation.chat_user_relation_chat_user_id = message_item.message_user_id
AND chat_user_relation.chat_user_relation_chat_user_chat_id = :chatId
LEFT JOIN chat_user target_user
ON target_user.chat_user_id = message_item.messages_target_user
LEFT JOIN chat_user from_group_user
ON from_group_user.chat_user_id = message_item.messages_from_group_user
WHERE message_item.message_chat_id = :chatId
ORDER BY message_created_at ASC
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加