๐Ÿ’ SQL/Join

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค][SQL] ๊ทธ๋ฃน๋ณ„ ์กฐ๊ฑด์— ๋งž๋Š” ์‹๋‹น ๋ชฉ๋ก ์ถœ๋ ฅํ•˜๊ธฐ

์„ ๋‹ฌ 2023. 7. 5. 16:13
๋ฐ˜์‘ํ˜•

https://school.programmers.co.kr/learn/courses/30/lessons/131124

 

MEMBER_PROFILE์™€ REST_REVIEW ํ…Œ์ด๋ธ”์—์„œ

๋ฆฌ๋ทฐ๋ฅผ ๊ฐ€์žฅ ๋งŽ์ด ์ž‘์„ฑํ•œ ํšŒ์›์˜

๋ฆฌ๋ทฐ๋“ค์„ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

ํšŒ์› ์ด๋ฆ„, ๋ฆฌ๋ทฐ ํ…์ŠคํŠธ, ๋ฆฌ๋ทฐ ์ž‘์„ฑ์ผ์ด ์ถœ๋ ฅ๋˜๋„๋ก ์ž‘์„ฑํ•ด์ฃผ์‹œ๊ณ ,

๊ฒฐ๊ณผ๋Š” ๋ฆฌ๋ทฐ ์ž‘์„ฑ์ผ์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ, ๋ฆฌ๋ทฐ ์ž‘์„ฑ์ผ์ด ๊ฐ™๋‹ค๋ฉด ๋ฆฌ๋ทฐ ํ…์ŠคํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”.

 

ํ’€์ด

๋จผ์ € ๊ฐ€์žฅ ๋งŽ์€ ๋ฆฌ๋ทฐ์ˆ˜๋ฅผ ์ž‘์„ฑํ•œ ์‚ฌ๋žŒ์„ ์•Œ์•„๋‚ด์ž

        select member_id
        from rest_review
        group by member_id
        order by count(review_id) desc
        limit 1

 

์ด์ œ ์ด ๋ฉค๋ฒ„๊ฐ€ ์ž‘์„ฑํ•œ ๋ฆฌ๋ทฐ๋“ค์„ ๊ณจ๋ผ๋‚ธ๋‹ค

limit ์—ฐ์‚ฐ์ด ๋“ค์–ด๊ฐ„ ๊ฒฝ์šฐ where์—์„œ in ์„ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•œ๋‹ค๋Š” ์ ์„ ๊ธฐ์–ต (์—ฌ๊ธฐ์„œ๋Š” ๋‹จ์ˆœํ•˜๊ฒŒ ๋“ฑํ˜ธ๋ฅผ ์‚ฌ์šฉ)

    select member_id, review_text, review_date
    from rest_review
    where member_id = (
        select member_id
        from rest_review
        group by member_id
        order by count(review_id) desc
        limit 1)

 

์ด์ œ ์ด๋ ‡๊ฒŒ ๊ณจ๋ผ๋‚ธ ๋ฆฌ๋ทฐ๋“ค๊ณผ ๋ฉค๋ฒ„ํ”„๋กœํ•„์„ joinํ•ด์„œ ํ•ด๋‹น ๋ฉค๋ฒ„์˜ ์ด๋ฆ„๊ณผ, ๋ฆฌ๋ทฐ์˜ ํ…์ŠคํŠธ์™€ ๋‚ ์งœ๋ฅผ ์กฐ๊ฑด์— ๋งž๊ฒŒ ์ถœ๋ ฅํ•œ๋‹ค

select p.member_name, r.review_text, date_format(r.review_date, "%Y-%m-%d") as review_date
from member_profile p join (
    select member_id, review_text, review_date
    from rest_review
    where member_id = (
        select member_id
        from rest_review
        group by member_id
        order by count(review_id) desc
        limit 1)) r
    on p.member_id = r.member_id
order by review_date, r.review_text

 

๋ฐ˜์‘ํ˜•