subindev 님의 블로그

2025.02.07(금) 1일 1쿼리 본문

데이터 베이스/SQL - 1일 1쿼리

2025.02.07(금) 1일 1쿼리

subindev 2025. 2. 7. 10:55

현재 Mybatis를 사용하여 진행중인 'A+ 마켓 플러터 앱 프로젝트' 에서 사용된 쿼리입니다.

Quiz)  채팅방 Id를 이용하여 최근 메시지 30개를 포함한 채팅방 정보
 SELECT
               c.id AS chatRoomId,
               tpi.uuid_name AS productThumbnail,
               p.product_name AS productName,
               p.price AS price,
               p.is_negotiable AS isNegotiable,
               p.id AS productId,
               u.id AS userId,
               u.name AS userName,
               u.profile_img AS profileImage,
               rm.id AS chatMessageId,
               rm.content AS content,
               rm.created_at AS createdAt
           FROM tb_chat_room AS c
           JOIN tb_product AS p ON p.id = c.product_id
           JOIN tb_chat_mapping AS cm ON cm.chat_room_id = c.id
           JOIN tb_user AS u ON u.id = cm.user_id
           JOIN tb_product_image tpi ON tpi.product_id = p.id AND tpi.sequence = 0
   	     JOIN tb_chat_message rm ON c.id = rm.chat_room_id AND u.id = rm.user_id
           WHERE c.id = #{chatRoomId}
           ORDER BY rm.created_at desc
         limit 30