UMC 서버 스터디 Node.js 5주차 미션 '화면을 보고 쿼리 구성하기'를 수행하면서 작성한 SQL 쿼리문이다.
jangyoujung / mysql_study Goto Github PK
View Code? Open in Web Editor NEWMySQL 쿼리 작성 실습 📁
MySQL 쿼리 작성 실습 📁
✅ 진행 완료 화면에서는 member_mission의 mission_status 속성이 ‘doneyet’ 즉, 미션은 수행 완료했지만 리뷰는 작성하지 않은 미션들에 대해 출력하도록 셀렉문을 구성했다.
1️⃣ 미션 도전 상태: yetyet
2️⃣ 미션 수행 완료 / 리뷰는 작성 전 - doneyet
✅ 페이징은 member_mission에서 가장 최근에 수정이 이루어진, 즉 가장 최근에 완료한 미션부터 오름차순으로 출력하도록 구성했다.
3️⃣ 미션 수행 완료 / 리뷰 작성 완료 - donedone
✅ SQL에서 point는 키워드인 관계로 point를 mileage로 대체했다.
✅ 닉네임 ‘nickname012’ 회원의 member_id = 1234라고 가정했다.
➡️ 미션 마감 기한이 지나도 리뷰를 쓸 수 있는 유예기간을 보장하지 못한다.
해결법: 만약 사용자가 미션을 완료하면, 리뷰를 쓸 유예 기간을 한 달 주도록 mission의 deadline 속성에 month+=1 로 갱신한다.
➡️근데 이렇게 하면 완료했지만 미션 자체의 원래 기한 데이터는 사라지므로 좋은 방법이 아닌 것 같다.
⏩ 그냥 매 쿼리에 미션 deadline과 현재 datetime을 비교하는 구문을 추가하고, 미션 테이블에 있는 인스턴스는 마감 기한이 지나도 남겨두는 방향으로 구성했다.
2️⃣ 인증 가능한 미션 목록
✅첫 번째 조인: region과 store를 조인하여 ‘안암동’ 안에 있는 가게들을 가져온다.
✅두 번째 조인: 첫째 조인에서 가져온 가게 목록과 미션을 조인하여 안암동에 있는 가게들에 대한 미션을 가져온다.
✅서브 쿼리: 전체 셀렉문의 where 조건 절에 삽입된 서브 쿼리에서는 사용자가 수행한 미션 정보를 담고 있는 member_mission을 사용해서 ‘사용자가 아직 수행하지 않은’ 미션들만 가져올 수 있도록 Not Exist문에 서브 쿼리를 삽입했다.
✅ 페이징: deadline이 작은 것→큰 것 오름차순으로 가장 마감일이 임박한 미션부터 3개씩 출력하도록 구성했다(마지막 줄).
✅ 닉네임 ‘nickname012’ 회원의 member_id = 1234라고 가정했다.
✅ review 테이블의 id 속성은 auto_increment 속성이라고 가정했다.
✅ 닉네임 ‘nickname012’ 회원의 member_id = 1234라고 가정했다.
❓ ‘진행 완료’ 화면에서 ‘사용자가 완료한 미션’을 클릭시 리뷰로 넘어가는 건데 왜 리뷰 테이블은 멤버 미션 테이블을 참고하지 않는 것일까.
✅ 홈화면에서 사용자가 도전하고 싶은 미션에 대해 ‘미션 도전!’ 버튼을 누르면 ‘진행 중’ 화면으로 넘어가고 member_mission에 해당 미션이 삽입 된다.
1️⃣ 미션 도전 상태: yetyet
2️⃣ 미션 수행 완료 / 리뷰는 작성 전 - doneyet
3️⃣ 미션 수행 완료 / 리뷰 작성 완료 - donedone
→ 즉, 진행 중에서 가져올 미션 데이터는 **‘mission_status = yetyet’**인 미션인 것이다.
→ 진행 완료 화면에서 가져올 미션 데이터는 **‘mission_status = doneyet’**으로 갱신
→ 사용자가 리뷰를 작성하면 **‘mission_status = donedone’**으로 갱신
✅ 닉네임 ‘nickname012’ 회원의 member_id = 1234라고 가정했다.
✅ 페이징은 dealine 날짜가 오름차순 즉, 가장 임박한 미션부터 5개씩 출력하도록 구성했다.
RDBMS to OLAP : created_at 과 updated_at
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.