<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Spell</title>
    <link>https://spell.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Sat, 13 Jun 2026 14:40:26 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>Spell</managingEditor>
    <image>
      <title>Spell</title>
      <url>https://tistory1.daumcdn.net/tistory/5322033/attach/4703ece8a3f6432fbeae1d658f933ab1</url>
      <link>https://spell.tistory.com</link>
    </image>
    <item>
      <title>본격 쿼리 직접 작성해보기 2 (feat. inner join)</title>
      <link>https://spell.tistory.com/entry/%EB%B3%B8%EA%B2%A9-%EC%BF%BC%EB%A6%AC-%EC%A7%81%EC%A0%91-%EC%9E%91%EC%84%B1%ED%95%B4%EB%B3%B4%EA%B8%B0-2-feat-inner-join</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1) &lt;span&gt;웹개발&lt;span&gt;, &lt;/span&gt;앱개발 종합반의&lt;span&gt; week &lt;/span&gt;별 체크인 수를 세어보기&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;활용할 테이블을 먼저 찾아보자.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1653997161077&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from courses c&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;90&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cEaRZ5/btrDGIz2bI0/QRSli9vJ7Wgqzab2Z63Mq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cEaRZ5/btrDGIz2bI0/QRSli9vJ7Wgqzab2Z63Mq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cEaRZ5/btrDGIz2bI0/QRSli9vJ7Wgqzab2Z63Mq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcEaRZ5%2FbtrDGIz2bI0%2FQRSli9vJ7Wgqzab2Z63Mq0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;90&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;90&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1653997173000&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from checkins ch&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;148&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bc0KtT/btrDCUoVzcT/elgJx73rLvmXcwfyEoomxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bc0KtT/btrDCUoVzcT/elgJx73rLvmXcwfyEoomxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bc0KtT/btrDCUoVzcT/elgJx73rLvmXcwfyEoomxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbc0KtT%2FbtrDCUoVzcT%2FelgJx73rLvmXcwfyEoomxK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;148&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;148&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 두 테이블이면 되겠다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;courses에 checkins 테이블을 붙이고, key는 course_id가 되면 좋겠다.&lt;/p&gt;
&lt;pre id=&quot;code_1653997229916&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from courses c
inner join checkins ch
on c.course_id = ch.course_id&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;162&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWZyHJ/btrDCTpXv6F/ABy29xlibITvKkqdefMrS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWZyHJ/btrDCTpXv6F/ABy29xlibITvKkqdefMrS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWZyHJ/btrDCTpXv6F/ABy29xlibITvKkqdefMrS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWZyHJ%2FbtrDCTpXv6F%2FABy29xlibITvKkqdefMrS0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;162&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;162&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;group by로 웹개발, 앱개발을 묶어 줘야겠다.&lt;/p&gt;
&lt;pre id=&quot;code_1653997253222&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from courses c
inner join checkins ch
on c.course_id = ch.course_id
group by c.title&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;70&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mWrZc/btrDFJ7fOKm/Nq1VN7PnssnJKQkyTkFMB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mWrZc/btrDFJ7fOKm/Nq1VN7PnssnJKQkyTkFMB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mWrZc/btrDFJ7fOKm/Nq1VN7PnssnJKQkyTkFMB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmWrZc%2FbtrDFJ7fOKm%2FNq1VN7PnssnJKQkyTkFMB0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;70&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;70&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;더 나아가서, week별로 묶어주는 것도 필요할 것 같다. 두 가지 항목을 group by로 묶어줄 땐, 콤마(,)를 사용하자.&lt;/p&gt;
&lt;pre id=&quot;code_1653997296182&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from courses c
inner join checkins ch
on c.course_id = ch.course_id
group by c.title, ch.week&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;151&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/crGRhY/btrDHeeohAW/RqKU6RkQjA7Zk7RpCGaTNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/crGRhY/btrDHeeohAW/RqKU6RkQjA7Zk7RpCGaTNk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/crGRhY/btrDHeeohAW/RqKU6RkQjA7Zk7RpCGaTNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcrGRhY%2FbtrDHeeohAW%2FRqKU6RkQjA7Zk7RpCGaTNk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;151&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;151&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 수를 세어야하니 count를 활용해주고, select을 활용해서 보기 좋게 수정하자.&lt;/p&gt;
&lt;pre id=&quot;code_1653997321429&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select c.title, ch.week, count(*) as cnt
from courses c
inner join checkins ch
on c.course_id = ch.course_id
group by c.title, ch.week&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;436&quot; data-origin-height=&quot;227&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOOxal/btrDEiiwgz9/T1PyfFkdJ1pU9EG5H0m7b1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOOxal/btrDEiiwgz9/T1PyfFkdJ1pU9EG5H0m7b1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOOxal/btrDEiiwgz9/T1PyfFkdJ1pU9EG5H0m7b1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOOxal%2FbtrDEiiwgz9%2FT1PyfFkdJ1pU9EG5H0m7b1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;436&quot; height=&quot;227&quot; data-origin-width=&quot;436&quot; data-origin-height=&quot;227&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;별칭도 달아 주었다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;order by로 보기 좋게 오름차순으로 정렬해주면 더 좋을 것 같다. 여기서도 앱개발/웹개발 그리고 week가 연관성있게 정렬되어 있는게 좋으니, 콤마를 이용해서 함께 정렬해주자.&lt;/p&gt;
&lt;pre id=&quot;code_1653997372109&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select c.title, ch.week, count(*) as cnt
from courses c
inner join checkins ch
on c.course_id = ch.course_id
group by c.title, ch.week
order by c.title, ch.week&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;444&quot; data-origin-height=&quot;220&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nKlKI/btrDGcalUUA/wHFfHnPsI5ke0pWrXrs8Fk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nKlKI/btrDGcalUUA/wHFfHnPsI5ke0pWrXrs8Fk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nKlKI/btrDGcalUUA/wHFfHnPsI5ke0pWrXrs8Fk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnKlKI%2FbtrDGcalUUA%2FwHFfHnPsI5ke0pWrXrs8Fk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;444&quot; height=&quot;220&quot; data-origin-width=&quot;444&quot; data-origin-height=&quot;220&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고로 order by에서 ch.week에만 내림차순을 입힐 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1653997395650&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select c.title, ch.week, count(*) as cnt
from courses c
inner join checkins ch
on c.course_id = ch.course_id
group by c.title, ch.week
order by c.title, ch.week desc&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;434&quot; data-origin-height=&quot;223&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYikLe/btrDFJGc9BJ/TpQX4kCMR229KPVYQQmwAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYikLe/btrDFJGc9BJ/TpQX4kCMR229KPVYQQmwAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYikLe/btrDFJGc9BJ/TpQX4kCMR229KPVYQQmwAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYikLe%2FbtrDFJGc9BJ%2FTpQX4kCMR229KPVYQQmwAk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;434&quot; height=&quot;223&quot; data-origin-width=&quot;434&quot; data-origin-height=&quot;223&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2) 위에 연습한 &lt;span&gt;&amp;ldquo;&lt;/span&gt;웹개발&lt;span&gt;, &lt;/span&gt;앱개발 종합반의&lt;span&gt; week &lt;/span&gt;별 체크인 수를 세어보기&lt;span&gt;&amp;rdquo;&lt;/span&gt;에서 추가로 &lt;span&gt;8&lt;/span&gt;월&lt;span&gt; 1&lt;/span&gt;일 이후에 구매한 고객들만 보기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 과정에서 살펴봤던 테이블은 courses 그리고 checkins 였다. 여기에 추가로 구매관련 테이블이 필요하겠다.&lt;/p&gt;
&lt;pre id=&quot;code_1653997446940&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from orders&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;122&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SMeNW/btrDBvh2ImQ/25ZATYhpQEyjnUSzbgFhv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SMeNW/btrDBvh2ImQ/25ZATYhpQEyjnUSzbgFhv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SMeNW/btrDBvh2ImQ/25ZATYhpQEyjnUSzbgFhv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSMeNW%2FbtrDBvh2ImQ%2F25ZATYhpQEyjnUSzbgFhv1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;122&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;122&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, orders 테이블을 한번 더 checkins 테이블에 붙여주어야 한다. 그리고 8월 1일 이후에 구매한 주문만으로 추려줘야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 한번 더 inner join으로 붙여보자. chekcins와 orders 테이블에 user_id가 있기에, 이를 통해서 붙여줬다.&lt;/p&gt;
&lt;pre id=&quot;code_1653997504915&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from courses c
inner join checkins ch
on c.course_id = ch.course_id
inner join orders o
on ch.course_id = o.course_id&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제.. orders 테이블에서 8월 1일 이후에 구매한 고객만 추려야 하니, 이는 created_at이 그 시점 이후여야 하겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(여기서 created_at은 orders 테이블에 있는 필드다)&lt;/p&gt;
&lt;pre id=&quot;code_1653997545719&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from courses c
inner join checkins ch
on c.course_id = ch.course_id
inner join orders o
on ch.user_id = o.user_id
where o.created_at &amp;gt;= '2020-08-01 00:00:00'&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;159&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tbxLW/btrDCTcrNN0/XfZosWltrgKqMnytyr7Ok1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tbxLW/btrDCTcrNN0/XfZosWltrgKqMnytyr7Ok1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tbxLW/btrDCTcrNN0/XfZosWltrgKqMnytyr7Ok1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtbxLW%2FbtrDCTcrNN0%2FXfZosWltrgKqMnytyr7Ok1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;159&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;159&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존과 동일하게 묶어주고 세어주자. 보기 편하게 정렬과 별칭도 잊지 말고!&lt;/p&gt;
&lt;pre id=&quot;code_1653997568494&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select c.title, ch.week, count(*) as cnt
from courses c
inner join checkins ch
on c.course_id = ch.course_id
inner join orders o
on ch.user_id = o.user_id
where o.created_at &amp;gt;= '2020-08-01 00:00:00'
group by c.title, ch.week
order by c.title, ch.week&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;434&quot; data-origin-height=&quot;172&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/duMzgE/btrDGJ6LUFs/KkPX1gKLQ1UZd7Mm4HhJT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/duMzgE/btrDGJ6LUFs/KkPX1gKLQ1UZd7Mm4HhJT1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/duMzgE/btrDGJ6LUFs/KkPX1gKLQ1UZd7Mm4HhJT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FduMzgE%2FbtrDGJ6LUFs%2FKkPX1gKLQ1UZd7Mm4HhJT1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;434&quot; height=&quot;172&quot; data-origin-width=&quot;434&quot; data-origin-height=&quot;172&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;여기 잠깐 짚고 넘어가야 할 것이 있다. SQL에는 같은 결과에 도달하는 방법이 여러가지다.&lt;br /&gt;그래서 반드시 지금 쓴 쿼리만이 정답이 아니다. 이를 명심하자.&lt;br /&gt;추가로, 이렇게 해봤다가 저렇게 해봤다가 콤마도 넣어보고 오류를 겪어보고 경험을 해보면서 결과를 도출해내는 것이니 천천히 접근해보자!&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>SQL</category>
      <category>inner join</category>
      <category>spell</category>
      <category>SQL</category>
      <author>Spell</author>
      <guid isPermaLink="true">https://spell.tistory.com/41</guid>
      <comments>https://spell.tistory.com/entry/%EB%B3%B8%EA%B2%A9-%EC%BF%BC%EB%A6%AC-%EC%A7%81%EC%A0%91-%EC%9E%91%EC%84%B1%ED%95%B4%EB%B3%B4%EA%B8%B0-2-feat-inner-join#entry41comment</comments>
      <pubDate>Tue, 31 May 2022 20:47:38 +0900</pubDate>
    </item>
    <item>
      <title>서버(server) - 클라이언트(client) 통신 이해하기</title>
      <link>https://spell.tistory.com/entry/%EC%84%9C%EB%B2%84server-%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8client-%ED%86%B5%EC%8B%A0-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Javascript로 페이지 전환 없이 서버에서 값을 받아올 수 있는 방법&lt;/b&gt;은 무엇일까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그전에 API에 대해서 일단 무엇인지 알아야 한다. Json이 뭔지도 알아야하고.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;API?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클라이언트는 서버에게 여러 요청을 보낸다. 그럼 서버는 요청에 따라 적합한 처리를 해서 응답을 준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 컴퓨터는 한글을 모르기에 어떤 요청이 '사진 올려줘'의 요청인지, '로그인 시켜줘'의 요청인지 알 수 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요청을 구분할 수 있도록 하는 체계가 바로 API이다. 클라이언트, 서버와 같은 서로 다른 프로그램에서 요청과 응답을 주고 받을 수 있게 만든 체계인 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Json?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 이런 요청과 응답을 할 때는 데이터가 담길 수 있기에 데이터를 넣을 수 있는 '기능'또한 함께 개발해야 한다. 그런데 데이터를 넣을 수 있는 '기능'에는 여러가지 형식이 있다. 형식은 어떻게 만드냐에 따라서 무한대에 가까울 수 있다. 그럼 그 형식을 처리하기 위한 코드를 또 적어줘야 하는데, 만약 100개의 다른 형식으로의 요청이 있다면, 그 100개의 형식에 대응하는 코드를 적어줘야 한다. 아주 비효율적이니 &quot;하나의 형식을 통일되게 사용하면 어떨까?&quot;에서 출발하였다. 과거엔 XML이라는 형식이 널리 쓰였으나 현재 가장 유명한 형식이 바로 Json이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Json은 중괄호로 시작하며, key와 value로 이루어져 있다. 그 키와 값은 '콜론(:)'으로 구분한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를들면&lt;/p&gt;
&lt;pre id=&quot;code_1653576828180&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
	Key1: value1,
	Key2: value2,
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 형태이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배열(array)이라는 형식이 필요할 때는 다음과 같다.&lt;/p&gt;
&lt;pre id=&quot;code_1653576850718&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
	Key1: value1,
	Key2: value2,
	Key3: [ value3, value4, value5 ]
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시를 들어 보자면 다음과 같을 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1653576868174&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
	&amp;ldquo;category&amp;rdquo;: &amp;ldquo;마법&amp;rdquo;,
	&amp;ldquo;element&amp;rdquo;: &amp;ldquo;얼음&amp;rdquo;,
	&amp;ldquo;spells&amp;rdquo;: [ &amp;ldquo;아이스 볼&amp;rdquo;, &amp;ldquo;아이스 볼트&amp;rdquo;, &amp;ldquo;프리징&amp;rdquo; ]
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가로 과거에 포스팅해두었던 내용이 도움이 된다. (&lt;a href=&quot;https://spell.tistory.com/entry/SQL-study-start&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://spell.tistory.com/entry/SQL-study-start&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CRUD의 관점에서 생각하는 것이 필요하다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Create(생성해줘): POST&lt;br /&gt;Read(불러와 줘): GET&lt;br /&gt;Update(바꿔줘): PUT(전체) / PATCH(일부)&lt;br /&gt;Delete(지워줘): DELETE&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 JsonView라는 크롬에서의 확장 프로그램을 설치해볼꺼다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #fcfcfc; color: #666666;&quot;&gt;&lt;a href=&quot;https://chrome.google.com/webstore/detail/jsonview/gmegofmjomhknnokphhckolhcffdaihd/related?hl=ko&quot;&gt;https://chrome.google.com/webstore/detail/jsonview/gmegofmjomhknnokphhckolhcffdaihd/related?hl=ko&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1653577086091&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;JSONView&quot; data-og-description=&quot;브라우저에서 JSON 문서를 보세요.&quot; data-og-host=&quot;chrome.google.com&quot; data-og-source-url=&quot;https://chrome.google.com/webstore/detail/jsonview/gmegofmjomhknnokphhckolhcffdaihd/related?hl=ko&quot; data-og-url=&quot;https://chrome.google.com/webstore/detail/jsonview/gmegofmjomhknnokphhckolhcffdaihd&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cXZkZj/hyOxmGVnM3/diEt6jQcPFwOHNkBP5ALUK/img.jpg?width=128&amp;amp;height=128&amp;amp;face=0_0_128_128&quot;&gt;&lt;a href=&quot;https://chrome.google.com/webstore/detail/jsonview/gmegofmjomhknnokphhckolhcffdaihd/related?hl=ko&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://chrome.google.com/webstore/detail/jsonview/gmegofmjomhknnokphhckolhcffdaihd/related?hl=ko&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cXZkZj/hyOxmGVnM3/diEt6jQcPFwOHNkBP5ALUK/img.jpg?width=128&amp;amp;height=128&amp;amp;face=0_0_128_128');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;JSONView&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;브라우저에서 JSON 문서를 보세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;chrome.google.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 다음은 미세먼지 Open API인데, 기존 크롬창으로 보면 다음과 같이 나온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;http://openapi.seoul.go.kr:8088/6d4d776b466c656533356a4b4b5872/json/RealtimeCityAir/1/99&quot;&gt;http://openapi.seoul.go.kr:8088/6d4d776b466c656533356a4b4b5872/json/RealtimeCityAir/1/99&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;111&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c1lVKX/btrDdHCwCFG/PYPPK0Grbt0JhtVJMJkBU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c1lVKX/btrDdHCwCFG/PYPPK0Grbt0JhtVJMJkBU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c1lVKX/btrDdHCwCFG/PYPPK0Grbt0JhtVJMJkBU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc1lVKX%2FbtrDdHCwCFG%2FPYPPK0Grbt0JhtVJMJkBU1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;111&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;111&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아주아주아주 보기 힘들다. 그래서 이를 보기 쉽게 JsonView라는 확장 프로그램을 설치하는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치 후 해당 페이지를 새로고침 하면 다음과 같이 조금 더 알아보기 쉽게 볼 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;534&quot; data-origin-height=&quot;1258&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cwgFGY/btrDfB9bMM8/2b0xg03pCrDhUO89dvZqXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cwgFGY/btrDfB9bMM8/2b0xg03pCrDhUO89dvZqXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cwgFGY/btrDfB9bMM8/2b0xg03pCrDhUO89dvZqXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcwgFGY%2FbtrDfB9bMM8%2F2b0xg03pCrDhUO89dvZqXK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;352&quot; height=&quot;829&quot; data-origin-width=&quot;534&quot; data-origin-height=&quot;1258&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 Json은 딕셔너리와 리스트의 조합과 생김새가 아주 비슷하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체를 접어보면&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;325&quot; data-origin-height=&quot;106&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3pJJs/btrDegq8WUD/LRv17LVbitWGVJ4bFuj9l1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3pJJs/btrDegq8WUD/LRv17LVbitWGVJ4bFuj9l1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3pJJs/btrDegq8WUD/LRv17LVbitWGVJ4bFuj9l1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3pJJs%2FbtrDegq8WUD%2FLRv17LVbitWGVJ4bFuj9l1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;325&quot; height=&quot;106&quot; data-origin-width=&quot;325&quot; data-origin-height=&quot;106&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RealtimeCityAir라는 키에 딕셔너리가 담겨있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;375&quot; data-origin-height=&quot;211&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhJr0o/btrDcrHrtOA/TqO7jpJdifPmhiLiOiTikk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhJr0o/btrDcrHrtOA/TqO7jpJdifPmhiLiOiTikk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhJr0o/btrDcrHrtOA/TqO7jpJdifPmhiLiOiTikk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhJr0o%2FbtrDcrHrtOA%2FTqO7jpJdifPmhiLiOiTikk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;375&quot; height=&quot;211&quot; data-origin-width=&quot;375&quot; data-origin-height=&quot;211&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 안에 list_total_count에 25라는 value가, RESULT라는 key에 딕셔너리가, row라는 key에 리스트가 들어있음을 알 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;row를 추가로 살펴보면&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;498&quot; data-origin-height=&quot;831&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dnSHXB/btrDgiO4pfS/VHwPrP3jkYDro51IqZQPz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dnSHXB/btrDgiO4pfS/VHwPrP3jkYDro51IqZQPz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dnSHXB/btrDgiO4pfS/VHwPrP3jkYDro51IqZQPz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdnSHXB%2FbtrDgiO4pfS%2FVHwPrP3jkYDro51IqZQPz1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;285&quot; height=&quot;476&quot; data-origin-width=&quot;498&quot; data-origin-height=&quot;831&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 그림과 같이 딕셔너리 형태의 자료가 리스트형식으로 들어가 있음을 알 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 Javascript를 학습할 때 for문의 전형적인 패턴, 반복문의 전형적인 패턴이 기억난다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무튼...&lt;/p&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;Create(생성해줘): POST
Read(불러와 줘): GET
Update(바꿔줘): PUT(전체) / PATCH(일부)
Delete(지워줘): DELETE&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CRUD개념에서 GET요청은 보통 통상적으로 정보를 조회할 때 자주 쓴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리는 사실 GET요청의 고인물들이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왜냐하면 브라우저에서 엔터를 치는 행위 자체가 GET요청이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Naver의 영화 기생충관련 페이지를 보고 확인해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://movie.naver.com/movie/bi/mi/basic.naver?code=161967&quot;&gt;&lt;span&gt;&lt;b&gt;https://&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #7030a0;&quot;&gt;movie.naver.com&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span style=&quot;color: #538135;&quot;&gt;movie/bi/mi/basic.naver&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;?&lt;/span&gt;&lt;span&gt;code=161967&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;보라색&lt;/span&gt; 부분은 서버의 주소다. 은행으로 치면 OO은행 OO지점 같은 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;녹색&lt;/span&gt; 부분은 OO지점 안에서의 창구 이름정도로 생각해보면 이해가 쉽다. (입출금 창구, OO창구 등등)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 후 &lt;span style=&quot;color: #ee2323;&quot;&gt;붉은색&lt;/span&gt;의 '?'가 보인다. 이게 무슨 말 이냐면, 이곳을 기점으로 고객이 가지고 가는 데이터다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 예시 같은 경우에는 code라는 값을 가져가고 있다. 해당 값을 다른 것 으로 입력하면 다른 페이지가 나온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(해당 데이터 값에 대한 주민등록번호 등으로 생각해보자)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 이 code는 누가 정했는가? 요청을 하는 클라이언트 프로그래머와 요청을 받는 서버 프로그래머 사이에서 미리 약속을 한 것이다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&quot;너 code로 나한테 값을 줘!&quot;&lt;br /&gt;&quot;난 code로 너에게 값을 받을께!&quot;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 페이지도 마찬가지이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; &lt;span style=&quot;color: #7030a0;&quot;&gt;google.com/search&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;q=&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;아이폰&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;sourceid=chrome&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;ie=UTF-8&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'?'이후 여기서부터 전달할 데이터가 작성된다는 의미이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'&amp;amp;'는 전달할 데이터가 더 있다는 뜻이다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;예시)&lt;br /&gt;google.com/search?q=아이폰&amp;amp;sourceid=chrome&amp;amp;ie=UTF-8&amp;nbsp;위&amp;nbsp;주소는&amp;nbsp;google.com의&amp;nbsp;search&amp;nbsp;창구에&amp;nbsp;다음&amp;nbsp;정보를&amp;nbsp;전달한다.&lt;br /&gt;q=아이폰&amp;nbsp;(검색어)&lt;br /&gt;sourceid=chrome (브라우저&amp;nbsp;정보)&lt;br /&gt;ie=UTF-8 (인코딩&amp;nbsp;정보)&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Javascript</category>
      <category>API</category>
      <category>Client</category>
      <category>CRUD</category>
      <category>JSON</category>
      <category>Server</category>
      <category>spell</category>
      <author>Spell</author>
      <guid isPermaLink="true">https://spell.tistory.com/40</guid>
      <comments>https://spell.tistory.com/entry/%EC%84%9C%EB%B2%84server-%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8client-%ED%86%B5%EC%8B%A0-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0#entry40comment</comments>
      <pubDate>Fri, 27 May 2022 00:10:10 +0900</pubDate>
    </item>
    <item>
      <title>jQuery 연습하기</title>
      <link>https://spell.tistory.com/entry/jQuery-%EC%97%B0%EC%8A%B5%ED%95%98%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;예제 코드를 활용해서 직접 Javascript와 jQuery를 함께 사용해보면서 실습할꺼다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실습할 코드와 해당 화면은 더보기를 누르면 나온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1653575202013&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!doctype html&amp;gt;
&amp;lt;html lang=&quot;ko&quot;&amp;gt;

&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;title&amp;gt;jQuery 연습하고 가기!&amp;lt;/title&amp;gt;

    &amp;lt;!-- JQuery를 import 합니다 --&amp;gt;
    &amp;lt;script src=&quot;https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;

    &amp;lt;style type=&quot;text/css&quot;&amp;gt;
        div.question-box {
            margin: 10px 0 20px 0;
        }
    &amp;lt;/style&amp;gt;

    &amp;lt;script&amp;gt;
        function q1() {

        }

        function q2() {

        }

        function q3() {

        }

        function q3_remove() {

        }

    &amp;lt;/script&amp;gt;

&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;
    &amp;lt;h1&amp;gt;jQuery + Javascript의 조합을 연습하자!&amp;lt;/h1&amp;gt;

    &amp;lt;div class=&quot;question-box&quot;&amp;gt;
        &amp;lt;h2&amp;gt;1. 빈칸 체크 함수 만들기&amp;lt;/h2&amp;gt;
        &amp;lt;h5&amp;gt;1-1. 버튼을 눌렀을 때 입력한 글자로 얼럿 띄우기&amp;lt;/h5&amp;gt;
        &amp;lt;h5&amp;gt;[완성본]1-2. 버튼을 눌렀을 때 칸에 아무것도 없으면 &quot;입력하세요!&quot; 얼럿 띄우기&amp;lt;/h5&amp;gt;
        &amp;lt;input id=&quot;input-q1&quot; type=&quot;text&quot; /&amp;gt; &amp;lt;button onclick=&quot;q1()&quot;&amp;gt;클릭&amp;lt;/button&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;hr /&amp;gt;
    &amp;lt;div class=&quot;question-box&quot;&amp;gt;
        &amp;lt;h2&amp;gt;2. 이메일 판별 함수 만들기&amp;lt;/h2&amp;gt;
        &amp;lt;h5&amp;gt;2-1. 버튼을 눌렀을 때 입력받은 이메일로 얼럿 띄우기&amp;lt;/h5&amp;gt;
        &amp;lt;h5&amp;gt;2-2. 이메일이 아니면(@가 없으면) '이메일이 아닙니다'라는 얼럿 띄우기&amp;lt;/h5&amp;gt;
        &amp;lt;h5&amp;gt;[완성본]2-3. 이메일 도메인만 얼럿 띄우기&amp;lt;/h5&amp;gt;
        &amp;lt;input id=&quot;input-q2&quot; type=&quot;text&quot; /&amp;gt; &amp;lt;button onclick=&quot;q2()&quot;&amp;gt;클릭&amp;lt;/button&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;hr /&amp;gt;
    &amp;lt;div class=&quot;question-box&quot;&amp;gt;
        &amp;lt;h2&amp;gt;3. HTML 붙이기/지우기 연습&amp;lt;/h2&amp;gt;
        &amp;lt;h5&amp;gt;3-1. 이름을 입력하면 아래 나오게 하기&amp;lt;/h5&amp;gt;
        &amp;lt;h5&amp;gt;[완성본]3-2. 다지우기 버튼을 만들기&amp;lt;/h5&amp;gt;
        &amp;lt;input id=&quot;input-q3&quot; type=&quot;text&quot; placeholder=&quot;여기에 이름을 입력&quot; /&amp;gt;
        &amp;lt;button onclick=&quot;q3()&quot;&amp;gt;이름 붙이기&amp;lt;/button&amp;gt;
        &amp;lt;button onclick=&quot;q3_remove()&quot;&amp;gt;다지우기&amp;lt;/button&amp;gt;
        &amp;lt;ul id=&quot;names-q3&quot;&amp;gt;
            &amp;lt;li&amp;gt;세종대왕&amp;lt;/li&amp;gt;
            &amp;lt;li&amp;gt;임꺽정&amp;lt;/li&amp;gt;
        &amp;lt;/ul&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/body&amp;gt;

&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;969&quot; data-origin-height=&quot;1178&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pcKRQ/btrDdmrST2M/Q7VgpR6HvTXPK1ygk4CMG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pcKRQ/btrDdmrST2M/Q7VgpR6HvTXPK1ygk4CMG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pcKRQ/btrDdmrST2M/Q7VgpR6HvTXPK1ygk4CMG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpcKRQ%2FbtrDdmrST2M%2FQ7VgpR6HvTXPK1ygk4CMG0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;969&quot; height=&quot;1178&quot; data-origin-width=&quot;969&quot; data-origin-height=&quot;1178&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q1.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버튼을 눌렀을 때 입력한 글자 그대로 alert 창이 뜨고, 아무 내용이 없을 경우 특정 메세지를 띄우는 작업을 해볼꺼다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 해당 구역의 코드를 확인해보자.&lt;/p&gt;
&lt;pre id=&quot;code_1653575264099&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;question-box&quot;&amp;gt;
    &amp;lt;h2&amp;gt;1. 빈칸 체크 함수 만들기&amp;lt;/h2&amp;gt;
    &amp;lt;h5&amp;gt;1-1. 버튼을 눌렀을 때 입력한 글자로 얼럿 띄우기&amp;lt;/h5&amp;gt;
    &amp;lt;h5&amp;gt;[완성본]1-2. 버튼을 눌렀을 때 칸에 아무것도 없으면 &quot;입력하세요!&quot; 얼럿 띄우기&amp;lt;/h5&amp;gt;
    &amp;lt;input id=&quot;input-q1&quot; type=&quot;text&quot; /&amp;gt; &amp;lt;button onclick=&quot;q1()&quot;&amp;gt;클릭&amp;lt;/button&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;input창의 id값은 &quot;input-q1&quot;이고 버튼에 onclick으로 q1함수가 들어가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 q1 함수를 이것저것 수정해서 기능을 만들어 보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1653575314073&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function q1() {

}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 함수안에 코드를 적어내려가서 만들어야 하는데.. 구상을 해보자 음..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 input-q1의 입력값을 가져와야 하고..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 입력값이 빈칸일 경우에 '입력하세요!'등의 메세지가 있어야 하며&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력값이 존재한다면 그 입력값 자체를 경고창에 띄워줘야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력값을 가져와야 하니 변수를 담아보자.&lt;/p&gt;
&lt;pre id=&quot;code_1653575368172&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function q1() {
    let q1 = $('#input-q1').val();
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;q1이라는 text에 해당 input 구역 id를 활용해서 해당 입력값을 담았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 조건을 달아줘야 하니 if와 else를 사용해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;음.. 조건은 만약 q1에(입력값) 아무 메세지가 없으면 내용을 입력해달라는 alert를 띄우고, 그게 아니라면 q1(입력값) 그 자체를 띄워달라고 작성 해야겠다.&lt;/p&gt;
&lt;pre id=&quot;code_1653575437535&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function q1() {
    let q1 = $('#input-q1').val();
    if (q1 == '') {
        alert ('아무 내용도 입력되지 않았습니다. 입력해주세요!');
    } else {
        alert (q1);
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 페이지로 돌아가 두가지 동작을 테스트해보자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;195&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhFxFG/btrDeeNCTqs/yDMEsg4oSuZM4P0e5qeKyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhFxFG/btrDeeNCTqs/yDMEsg4oSuZM4P0e5qeKyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhFxFG/btrDeeNCTqs/yDMEsg4oSuZM4P0e5qeKyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhFxFG%2FbtrDeeNCTqs%2FyDMEsg4oSuZM4P0e5qeKyk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;195&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;195&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하나는 성공&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;197&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c9azrc/btrDegkpWUq/hw6LorYkvWW7LvFNQZtQF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c9azrc/btrDegkpWUq/hw6LorYkvWW7LvFNQZtQF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c9azrc/btrDegkpWUq/hw6LorYkvWW7LvFNQZtQF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc9azrc%2FbtrDegkpWUq%2Fhw6LorYkvWW7LvFNQZtQF0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;197&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;197&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두번째도 성공!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q2.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;음 이번에는 버튼을 눌렀을 때 입력값의 이메일을 띄우고, 이메일 주소가 아니라면 이메일이 아니라는 alert를 띄우자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 구역의 코드를 확인해보자.&lt;/p&gt;
&lt;pre id=&quot;code_1653575562360&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;question-box&quot;&amp;gt;
    &amp;lt;h2&amp;gt;2. 이메일 판별 함수 만들기&amp;lt;/h2&amp;gt;
    &amp;lt;h5&amp;gt;2-1. 버튼을 눌렀을 때 입력받은 이메일로 얼럿 띄우기&amp;lt;/h5&amp;gt;
    &amp;lt;h5&amp;gt;2-2. 이메일이 아니면(@가 없으면) '이메일이 아닙니다'라는 얼럿 띄우기&amp;lt;/h5&amp;gt;
    &amp;lt;h5&amp;gt;[완성본]2-3. 이메일 도메인만 얼럿 띄우기&amp;lt;/h5&amp;gt;
    &amp;lt;input id=&quot;input-q2&quot; type=&quot;text&quot; /&amp;gt; &amp;lt;button onclick=&quot;q2()&quot;&amp;gt;클릭&amp;lt;/button&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 구역 input의 id값은 &quot;input-q2&quot;이고 onclick으로 q2라는 함수가 적용되어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;q2함수를 작성해보자.&lt;/p&gt;
&lt;pre id=&quot;code_1653575596102&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function q2() {

}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구상을 시작해보자 흐음..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Q1할때와 동일하게 q2에 해당 input 입력값을 넣어두고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이메일 주소는 '@'가 들어가야 하니까 '@'가 있으면 입력값의 이메일을 띄워주는데, 해당 메일이 무엇인지를 띄워줘야 하니 예전에 실습한 split를 활용해보면 될 꺼 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후에 '@'가 없다면 이메일 주소가 아니니 입력을 확인해달라는 alert를 띄우자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;q2에다가 해당 input 입력값을 일단 담아두고&lt;/p&gt;
&lt;pre id=&quot;code_1653575694840&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function q2() {
    let q2 = $('#input-q2').val();
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 조건을 달아 줘야 하는데..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'@'값을 포함 여부를 확인해줘야 하니까.. 구글링을 해보니 includes라는 문법이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 문법을 활용해보니 다음과 같다.&lt;/p&gt;
&lt;pre id=&quot;code_1653575729142&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function q2() {
    let q2 = $('#input-q2').val();
    if (q2.includes('@')) {
        alert (q2.split('@')[1].split('.')[0]);
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;q2에 includes로 '@'가 포함되어 있다면 alert로 알려주는데, split를 2번 활용해서 '@'을 기준으로 나누고 '.'을 이용해서 나눈 입력값 중 내가 필요한 부분을 출력하게 만져보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, abcd@gmail.com 이라면 gmail이라는 메세지가 나올꺼고, abcd@naver.com이면 naver이라는 메세지가 출력되는 것 이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바로 동작을 확인해보자.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;830&quot; data-origin-height=&quot;370&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SH9Dp/btrDegdBkyT/pkzd5bKR70dpSxRiKzc6m0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SH9Dp/btrDegdBkyT/pkzd5bKR70dpSxRiKzc6m0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SH9Dp/btrDegdBkyT/pkzd5bKR70dpSxRiKzc6m0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSH9Dp%2FbtrDegdBkyT%2Fpkzd5bKR70dpSxRiKzc6m0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;366&quot; height=&quot;163&quot; data-origin-width=&quot;830&quot; data-origin-height=&quot;370&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;694&quot; data-origin-height=&quot;200&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/peFZ7/btrDc7aFZCQ/bDzBcNVRQsTkKVmUvKOka1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/peFZ7/btrDc7aFZCQ/bDzBcNVRQsTkKVmUvKOka1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/peFZ7/btrDc7aFZCQ/bDzBcNVRQsTkKVmUvKOka1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpeFZ7%2FbtrDc7aFZCQ%2FbDzBcNVRQsTkKVmUvKOka1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;441&quot; height=&quot;127&quot; data-origin-width=&quot;694&quot; data-origin-height=&quot;200&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 메일도 확인해보자&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;839&quot; data-origin-height=&quot;377&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IEqxu/btrDaTjrPQn/qr2hMKuQl5OUzcKMxb9DlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IEqxu/btrDaTjrPQn/qr2hMKuQl5OUzcKMxb9DlK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IEqxu/btrDaTjrPQn/qr2hMKuQl5OUzcKMxb9DlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIEqxu%2FbtrDaTjrPQn%2Fqr2hMKuQl5OUzcKMxb9DlK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;368&quot; height=&quot;165&quot; data-origin-width=&quot;839&quot; data-origin-height=&quot;377&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;192&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cOKf7I/btrDdetzSMK/y7Lv3o7YTKhsoa5JWpjoe0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cOKf7I/btrDdetzSMK/y7Lv3o7YTKhsoa5JWpjoe0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cOKf7I/btrDdetzSMK/y7Lv3o7YTKhsoa5JWpjoe0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcOKf7I%2FbtrDdetzSMK%2Fy7Lv3o7YTKhsoa5JWpjoe0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;406&quot; height=&quot;112&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;192&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오 좋아..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 마지막으로 else를 활용해서 아닐 경우 입력을 확인해달라는 alert를 띄우게 하자.&lt;/p&gt;
&lt;pre id=&quot;code_1653575924503&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function q2() {
    let q2 = $('#input-q2').val();
    if (q2.includes('@')) {
        alert (q2.split('@')[1].split('.')[0]);
    } else {
        alert ('이메일이 아닙니다. 확인해주세요!');
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동작 확인!&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;908&quot; data-origin-height=&quot;380&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/820Cc/btrDcUihGo0/WDKAnHIBv3laDkKOPnNqK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/820Cc/btrDcUihGo0/WDKAnHIBv3laDkKOPnNqK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/820Cc/btrDcUihGo0/WDKAnHIBv3laDkKOPnNqK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F820Cc%2FbtrDcUihGo0%2FWDKAnHIBv3laDkKOPnNqK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;908&quot; height=&quot;380&quot; data-origin-width=&quot;908&quot; data-origin-height=&quot;380&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;698&quot; data-origin-height=&quot;203&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Bv3vv/btrDaU3MwMQ/EiEZ4pdOi2sX8J5Nwt2yNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Bv3vv/btrDaU3MwMQ/EiEZ4pdOi2sX8J5Nwt2yNK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Bv3vv/btrDaU3MwMQ/EiEZ4pdOi2sX8J5Nwt2yNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBv3vv%2FbtrDaU3MwMQ%2FEiEZ4pdOi2sX8J5Nwt2yNK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;698&quot; height=&quot;203&quot; data-origin-width=&quot;698&quot; data-origin-height=&quot;203&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;성공!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q3.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력값을 입력 후 이름 붙이기라는 버튼을 누르면 아래쪽에 해당 입력값이 계속 추가되고, 다 지우기 버튼을 누르면 모든 게 지워지는! 아 이거 전에 append라는 문구를 활용해서 카드를 추가했던 기억이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 해당 구역을 살펴보자.&lt;/p&gt;
&lt;pre id=&quot;code_1653576005706&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;question-box&quot;&amp;gt;
    &amp;lt;h2&amp;gt;3. HTML 붙이기/지우기 연습&amp;lt;/h2&amp;gt;
    &amp;lt;h5&amp;gt;3-1. 이름을 입력하면 아래 나오게 하기&amp;lt;/h5&amp;gt;
    &amp;lt;h5&amp;gt;[완성본]3-2. 다지우기 버튼을 만들기&amp;lt;/h5&amp;gt;
    &amp;lt;input id=&quot;input-q3&quot; type=&quot;text&quot; placeholder=&quot;여기에 이름을 입력&quot; /&amp;gt;
    &amp;lt;button onclick=&quot;q3()&quot;&amp;gt;이름 붙이기&amp;lt;/button&amp;gt;
    &amp;lt;button onclick=&quot;q3_remove()&quot;&amp;gt;다지우기&amp;lt;/button&amp;gt;
    &amp;lt;ul id=&quot;names-q3&quot;&amp;gt;
        &amp;lt;li&amp;gt;세종대왕&amp;lt;/li&amp;gt;
        &amp;lt;li&amp;gt;임꺽정&amp;lt;/li&amp;gt;
    &amp;lt;/ul&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;input쪽은 id값이 &quot;input-q3&quot;으로 나와 있고, 이름 붙이기 버튼에 q3함수가! 다 지우기 버튼에는 q3_remove라는 함수가 적용되어 있다. 추가로 밑에 추가되는 란은 &amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;형식으로 입력되어 있는 것을 확인해 볼 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;함수를 2개를 만들어야겠다.&lt;/p&gt;
&lt;pre id=&quot;code_1653576060341&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function q3() {

}

function q3_remove() {

}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;q3의 함수를 먼저 구상해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이것도 똑같이 q3에 해당 입력값을 담아두고, 백팁을 활용해서 html이 자동으로 입력되게 구상을 해보면 될 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;q3_remove의 함수 같은 경우에는?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;밑에 지우는 버튼의 함수는 전혀 방법을 모르겠어서 구글링을 통해서 알아내었는데, jQuery중 empty()라는 문구가 있음을 확인했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;q3을 먼저 작성해볼까?&lt;/p&gt;
&lt;pre id=&quot;code_1653576122817&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function q3() {
    let q3 = $('#input-q3').val();
    let temp_html = `&amp;lt;li&amp;gt;${q3}&amp;lt;/li&amp;gt;`;
    $('#names-q3').append(temp_html);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;q3에 아까 말한대로 해당 입력값을 담아주었고, 백팁을 활용해서 temp_html이라는 문자열에 &amp;lt;li&amp;gt;&amp;lt;/li&amp;gt;을 활용해서 html문구가 추가로 적용되게 만들었다. 그리고 내용은 q3입력값 그 자체를 주었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후에 append를 사용해 백팁을 활용한 temp_html이 id가 &quot;names-q3&quot;인 지역에 추가되도록 해줬다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가가 계속 되어지는지 페이지에서 확인이 필요하다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;388&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nkf0S/btrDeCOdOWy/tXwdOEeutWrwshHWfrBdV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nkf0S/btrDeCOdOWy/tXwdOEeutWrwshHWfrBdV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nkf0S/btrDeCOdOWy/tXwdOEeutWrwshHWfrBdV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fnkf0S%2FbtrDeCOdOWy%2FtXwdOEeutWrwshHWfrBdV0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;489&quot; height=&quot;327&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;388&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력값을 아무렇게나 입력한 뒤 이름 붙이기 버튼을 눌러보자&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;569&quot; data-origin-height=&quot;391&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/N30Uu/btrDdnxxMYp/ku1BbSWWDwFReKpyo38za1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/N30Uu/btrDdnxxMYp/ku1BbSWWDwFReKpyo38za1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/N30Uu/btrDdnxxMYp/ku1BbSWWDwFReKpyo38za1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FN30Uu%2FbtrDdnxxMYp%2Fku1BbSWWDwFReKpyo38za1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;485&quot; height=&quot;333&quot; data-origin-width=&quot;569&quot; data-origin-height=&quot;391&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혹시 모르니 한번 더 해보면&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;575&quot; data-origin-height=&quot;445&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdBjhV/btrDcUo3OoH/uF5gGrqhk6DGkJ8cZjPaz0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdBjhV/btrDcUo3OoH/uF5gGrqhk6DGkJ8cZjPaz0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdBjhV/btrDcUo3OoH/uF5gGrqhk6DGkJ8cZjPaz0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdBjhV%2FbtrDcUo3OoH%2FuF5gGrqhk6DGkJ8cZjPaz0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;479&quot; height=&quot;371&quot; data-origin-width=&quot;575&quot; data-origin-height=&quot;445&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잘 작동한다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 q3_remove를 작성해야 하는데, 구글링으로 empty()문구를 활욯아면 됨을 알게 되었으니 직접 작성해보자.&lt;/p&gt;
&lt;pre id=&quot;code_1653576278023&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function q3_remove() {
    $('#names-q3').empty();
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지워지는 곳은 맨 아래에 &amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;구역이고, 이 구역의 id값은 아까 전에 &quot;names-q3&quot;으로 미리 확인해 두었기에 위의 코드처럼 작성했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바로 동작을 확인해보자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;570&quot; data-origin-height=&quot;414&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dpRzkS/btrDcYkg8T5/uj7oftSROjKddBPnQ9PKk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dpRzkS/btrDcYkg8T5/uj7oftSROjKddBPnQ9PKk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dpRzkS/btrDcYkg8T5/uj7oftSROjKddBPnQ9PKk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdpRzkS%2FbtrDcYkg8T5%2Fuj7oftSROjKddBPnQ9PKk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;435&quot; height=&quot;316&quot; data-origin-width=&quot;570&quot; data-origin-height=&quot;414&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 화면에서 다지우기를 누르면?&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;611&quot; data-origin-height=&quot;363&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rOMKC/btrDeeUnAqS/i50IPvlkzXOrjymrO4k4X0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rOMKC/btrDeeUnAqS/i50IPvlkzXOrjymrO4k4X0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rOMKC/btrDeeUnAqS/i50IPvlkzXOrjymrO4k4X0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrOMKC%2FbtrDeeUnAqS%2Fi50IPvlkzXOrjymrO4k4X0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;502&quot; height=&quot;298&quot; data-origin-width=&quot;611&quot; data-origin-height=&quot;363&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;깔끔하게 모두 지워진 모습이다! 성공!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Javascript/JQuery</category>
      <category>Append</category>
      <category>empty()</category>
      <category>JavaScript</category>
      <category>jquery</category>
      <category>Remove</category>
      <category>spell</category>
      <category>Split</category>
      <category>백팁(`)</category>
      <author>Spell</author>
      <guid isPermaLink="true">https://spell.tistory.com/39</guid>
      <comments>https://spell.tistory.com/entry/jQuery-%EC%97%B0%EC%8A%B5%ED%95%98%EA%B8%B0#entry39comment</comments>
      <pubDate>Thu, 26 May 2022 23:46:56 +0900</pubDate>
    </item>
    <item>
      <title>본격 쿼리 직접 작성해보기 (feat. inner join)</title>
      <link>https://spell.tistory.com/entry/%EB%B3%B8%EA%B2%A9-%EC%BF%BC%EB%A6%AC-%EC%A7%81%EC%A0%91-%EC%9E%91%EC%84%B1%ED%95%B4%EB%B3%B4%EA%B8%B0-feat-inner-join</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오늘도 예제를 가지고 쿼리를 직접 작성하고 그 과정을 적어내려 갈 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;결제 수단 별 유저 포인트의 평균값 구해보기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결제 수단과 포인트관련 테이블을 먼저 살펴봐야겠다.&lt;/p&gt;
&lt;pre id=&quot;code_1653395333363&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from orders o&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;116&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cXAzNi/btrC2CVmfSZ/yRKcwLxf0eUUyJwvjZ8dtk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cXAzNi/btrC2CVmfSZ/yRKcwLxf0eUUyJwvjZ8dtk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cXAzNi/btrC2CVmfSZ/yRKcwLxf0eUUyJwvjZ8dtk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcXAzNi%2FbtrC2CVmfSZ%2FyRKcwLxf0eUUyJwvjZ8dtk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;116&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;116&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1653395345173&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from point_users pu&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;997&quot; data-origin-height=&quot;164&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZy3xY/btrC4NPhcUX/rvnnCSu3NlY9N7bUvgEKXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZy3xY/btrC4NPhcUX/rvnnCSu3NlY9N7bUvgEKXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZy3xY/btrC4NPhcUX/rvnnCSu3NlY9N7bUvgEKXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZy3xY%2FbtrC4NPhcUX%2FrvnnCSu3NlY9N7bUvgEKXk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;997&quot; height=&quot;164&quot; data-origin-width=&quot;997&quot; data-origin-height=&quot;164&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pint_users 테이블을 주체 테이블로 사용할 것 이다. 연결하기 위한 key필드는 user_id가 되겠다.&lt;/p&gt;
&lt;pre id=&quot;code_1653395391224&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from point_users pu
inner join orders o
on pu.user_id = o.user_id&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;133&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cIwBiF/btrC4OgmcgJ/CBAEa3ZecA58YKeDkby011/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cIwBiF/btrC4OgmcgJ/CBAEa3ZecA58YKeDkby011/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cIwBiF/btrC4OgmcgJ/CBAEa3ZecA58YKeDkby011/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcIwBiF%2FbtrC4OgmcgJ%2FCBAEa3ZecA58YKeDkby011%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;133&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;133&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 결제 수단별로 이제 묶어주자.&lt;/p&gt;
&lt;pre id=&quot;code_1653395487347&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from point_users pu
inner join orders o
on pu.user_id = o.user_id
group by o.payment_method&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;111&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xk6T4/btrC3Mi1bWQ/4XrhlieFIsn2VyL2M1wJK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xk6T4/btrC3Mi1bWQ/4XrhlieFIsn2VyL2M1wJK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xk6T4/btrC3Mi1bWQ/4XrhlieFIsn2VyL2M1wJK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fxk6T4%2FbtrC3Mi1bWQ%2F4XrhlieFIsn2VyL2M1wJK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;111&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;111&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;평균값을 구해야 하니 avg를 활용해주고&lt;/p&gt;
&lt;pre id=&quot;code_1653395506602&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select avg(pu.point)
from point_users pu
inner join orders o
on pu.user_id = o.user_id
group by o.payment_method&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;253&quot; data-origin-height=&quot;161&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byeMkD/btrC4hC4C1f/zQwiKZTEkOXE2hhUwAZw30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byeMkD/btrC4hC4C1f/zQwiKZTEkOXE2hhUwAZw30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byeMkD/btrC4hC4C1f/zQwiKZTEkOXE2hhUwAZw30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyeMkD%2FbtrC4hC4C1f%2FzQwiKZTEkOXE2hhUwAZw30%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;253&quot; height=&quot;161&quot; data-origin-width=&quot;253&quot; data-origin-height=&quot;161&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 게 어떤 건지 모르겠으니 select을 조금 수정해주자.&lt;/p&gt;
&lt;pre id=&quot;code_1653395528359&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select o.payment_method avg(pu.point)
from point_users pu
inner join orders o
on pu.user_id = o.user_id
group by o.payment_method&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;838&quot; data-origin-height=&quot;152&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SX4Fw/btrC4OHpXmB/LhWkExHWI9hUcHMPbE7gH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SX4Fw/btrC4OHpXmB/LhWkExHWI9hUcHMPbE7gH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SX4Fw/btrC4OHpXmB/LhWkExHWI9hUcHMPbE7gH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSX4Fw%2FbtrC4OHpXmB%2FLhWkExHWI9hUcHMPbE7gH0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;838&quot; height=&quot;152&quot; data-origin-width=&quot;838&quot; data-origin-height=&quot;152&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어?.. 오류? avg근처에서 올바르게 구문이 사용되지 않았다고? 음.. 어째서? why?!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어 음 아? ㅠㅠ select을 여러 개 할 때 쉼표를 잊어버렸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 기초적인 실수를.. 흐어&lt;/p&gt;
&lt;pre id=&quot;code_1653395602574&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select o.payment_method, avg(pu.point)
from point_users pu
inner join orders o
on pu.user_id = o.user_id
group by o.payment_method&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하하.. 민망하게 성공&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;491&quot; data-origin-height=&quot;163&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Cl5q2/btrC3FjMzUW/zpAeFBiqOmtMZSzkHYjosK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Cl5q2/btrC3FjMzUW/zpAeFBiqOmtMZSzkHYjosK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Cl5q2/btrC3FjMzUW/zpAeFBiqOmtMZSzkHYjosK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCl5q2%2FbtrC3FjMzUW%2FzpAeFBiqOmtMZSzkHYjosK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;491&quot; height=&quot;163&quot; data-origin-width=&quot;491&quot; data-origin-height=&quot;163&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소수점 자리가 보기 불편하니 round를 활용해서 나타내자.&lt;/p&gt;
&lt;pre id=&quot;code_1653395632001&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select o.payment_method, round(avg(pu.point), 0)
from point_users pu
inner join orders o
on pu.user_id = o.user_id
group by o.payment_method&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;573&quot; data-origin-height=&quot;172&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEB81o/btrC0OChXV6/kXS2HxxtYgAHWC6kbeKVs0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEB81o/btrC0OChXV6/kXS2HxxtYgAHWC6kbeKVs0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEB81o/btrC0OChXV6/kXS2HxxtYgAHWC6kbeKVs0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEB81o%2FbtrC0OChXV6%2FkXS2HxxtYgAHWC6kbeKVs0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;573&quot; height=&quot;172&quot; data-origin-width=&quot;573&quot; data-origin-height=&quot;172&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;결제하고 시작하지 않은 유저들을 성씨별로 세어보기&lt;span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 성씨별 이니까 해당 데이터가 있는 users 테이블이 필요할꺼고&lt;/p&gt;
&lt;pre id=&quot;code_1653395675567&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from users u&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시작했는지 안했는지는 어떻게 알 수 있을까? 하나씩 테이블을 살펴봐서 어떤 데이터들이 있는지 확인해봐야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;찾았다!&lt;/p&gt;
&lt;pre id=&quot;code_1653395705964&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from enrolleds e&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;163&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/C9Xiv/btrC0PnGpiz/jpO3wHkqC6J6ET5tB4Nik1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/C9Xiv/btrC0PnGpiz/jpO3wHkqC6J6ET5tB4Nik1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/C9Xiv/btrC0PnGpiz/jpO3wHkqC6J6ET5tB4Nik1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FC9Xiv%2FbtrC0PnGpiz%2FjpO3wHkqC6J6ET5tB4Nik1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;163&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;163&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;is_registered라는 필드로 0과 1로 표시되어 있는 것을 찾았다. 1이 수강을 시작한거다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기선 음 enrolleds테이블에 users를 붙이는게 좋아 보인다. key필드는 user_id&lt;/p&gt;
&lt;pre id=&quot;code_1653395749975&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from enrolleds e
inner join users u 
on e.user_id = u.user_id&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;154&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjbfCE/btrCYjbHmjy/dQ4lCcROlajE1MPRgoRbp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjbfCE/btrCYjbHmjy/dQ4lCcROlajE1MPRgoRbp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjbfCE/btrCYjbHmjy/dQ4lCcROlajE1MPRgoRbp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjbfCE%2FbtrCYjbHmjy%2FdQ4lCcROlajE1MPRgoRbp1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;154&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;154&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 성씨별로 묶어주자.&lt;/p&gt;
&lt;pre id=&quot;code_1653395814116&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from enrolleds e
inner join users u 
on e.user_id = u.user_id
group by u.name&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;145&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dm4Gbn/btrC2B90He3/bFRCtkrkgLv2a2v99nePKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dm4Gbn/btrC2B90He3/bFRCtkrkgLv2a2v99nePKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dm4Gbn/btrC2B90He3/bFRCtkrkgLv2a2v99nePKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdm4Gbn%2FbtrC2B90He3%2FbFRCtkrkgLv2a2v99nePKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;145&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;145&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시작하지 않은 유저는 is_registered가 0으로 표시되니까, 이 필드가 0인 사람들로만 추려보자.&lt;/p&gt;
&lt;pre id=&quot;code_1653395842682&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from enrolleds e
inner join users u 
on e.user_id = u.user_id
where e.is_registered = 0
group by u.name&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;138&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cR0zzY/btrCY28AbIL/jGkkWV9yDnZrRNLQFPNTBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cR0zzY/btrCY28AbIL/jGkkWV9yDnZrRNLQFPNTBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cR0zzY/btrCY28AbIL/jGkkWV9yDnZrRNLQFPNTBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcR0zzY%2FbtrCY28AbIL%2FjGkkWV9yDnZrRNLQFPNTBK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;138&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;138&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;성씨별로 몇 명인지 세어 봐야하니 count를 활용해주면 되겠다.&lt;/p&gt;
&lt;pre id=&quot;code_1653395866042&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select u.name, count(u.name)
from enrolleds e
inner join users u 
on e.user_id = u.user_id
where e.is_registered = 0
group by u.name&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;406&quot; data-origin-height=&quot;342&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wwDvp/btrC1iqc96n/NuRuGiIv0aDcylht5zg6H1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wwDvp/btrC1iqc96n/NuRuGiIv0aDcylht5zg6H1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wwDvp/btrC1iqc96n/NuRuGiIv0aDcylht5zg6H1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwwDvp%2FbtrC1iqc96n%2FNuRuGiIv0aDcylht5zg6H1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;406&quot; height=&quot;342&quot; data-origin-width=&quot;406&quot; data-origin-height=&quot;342&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보기 편하게 오름차순으로 정렬도 하고.&lt;/p&gt;
&lt;pre id=&quot;code_1653395886915&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select u.name, count(u.name)
from enrolleds e
inner join users u 
on e.user_id = u.user_id
where e.is_registered = 0
group by u.name
order by count(u.name)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;더 보기 편하게 별칭도 주고&lt;/p&gt;
&lt;pre id=&quot;code_1653395909225&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select u.name, count(u.name) as cnt
from enrolleds e
inner join users u 
on e.user_id = u.user_id
where e.is_registered = 0
group by u.name
order by cnt&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;291&quot; data-origin-height=&quot;275&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cKOOpb/btrC0OIZJEd/wwanIkRF9UrD4UWm4KyREK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cKOOpb/btrC0OIZJEd/wwanIkRF9UrD4UWm4KyREK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cKOOpb/btrC0OIZJEd/wwanIkRF9UrD4UWm4KyREK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKOOpb%2FbtrC0OIZJEd%2FwwanIkRF9UrD4UWm4KyREK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;291&quot; height=&quot;275&quot; data-origin-width=&quot;291&quot; data-origin-height=&quot;275&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;select을 수정해서 어떤 상태인 사람들인지 표시도 하고&lt;/p&gt;
&lt;pre id=&quot;code_1653395931742&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select e.is_registered, u.name, count(u.name) as cnt
from enrolleds e
inner join users u 
on e.user_id = u.user_id
where e.is_registered = 0
group by u.name
order by cnt&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;481&quot; data-origin-height=&quot;311&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bx1LMq/btrCYhrpg8q/tTKgBoTOiSTlzQN5vJxbC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bx1LMq/btrCYhrpg8q/tTKgBoTOiSTlzQN5vJxbC1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bx1LMq/btrCYhrpg8q/tTKgBoTOiSTlzQN5vJxbC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbx1LMq%2FbtrCYhrpg8q%2FtTKgBoTOiSTlzQN5vJxbC1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;481&quot; height=&quot;311&quot; data-origin-width=&quot;481&quot; data-origin-height=&quot;311&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;과목 별로 시작하지 않은 유저들을 세어보기&lt;span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기도 시작하지 않은 유저들이니까 방금 했던 테이블을 활용하자.&lt;/p&gt;
&lt;pre id=&quot;code_1653395968095&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from enrolleds e&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;167&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oE5h1/btrC4fkRNxI/mENSy3oSoKW1LNOKFOzoq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oE5h1/btrC4fkRNxI/mENSy3oSoKW1LNOKFOzoq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oE5h1/btrC4fkRNxI/mENSy3oSoKW1LNOKFOzoq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoE5h1%2FbtrC4fkRNxI%2FmENSy3oSoKW1LNOKFOzoq0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;167&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;167&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가로 과목이 필요하니 courses테이블도!&lt;/p&gt;
&lt;pre id=&quot;code_1653395986097&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from courses c&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;84&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1VYkO/btrC2CujElI/8KdXp07JTQqX07kU8A8QdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1VYkO/btrC2CujElI/8KdXp07JTQqX07kU8A8QdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1VYkO/btrC2CujElI/8KdXp07JTQqX07kU8A8QdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1VYkO%2FbtrC2CujElI%2F8KdXp07JTQqX07kU8A8QdK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;84&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;84&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;course_id를 key로 활용하면 되겠다.&lt;/p&gt;
&lt;pre id=&quot;code_1653396014523&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from courses c 
inner join enrolleds e 
on c.course_id = e.course_id&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;141&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDLV9O/btrC4f6f0tk/ixVRuc1C3tg1jhWD1bzgx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDLV9O/btrC4f6f0tk/ixVRuc1C3tg1jhWD1bzgx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDLV9O/btrC4f6f0tk/ixVRuc1C3tg1jhWD1bzgx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDLV9O%2FbtrC4f6f0tk%2FixVRuc1C3tg1jhWD1bzgx0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;141&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;141&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시작하지 않은 사람은 is_registered가 0인 사람들이니까, where절로 추가하자&lt;/p&gt;
&lt;pre id=&quot;code_1653396050676&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from courses c 
inner join enrolleds e 
on c.course_id = e.course_id 
where e.is_registered = 0&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;123&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mz8wj/btrC4N2OZnR/rdzW8GoIODARNGtyBCSCek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mz8wj/btrC4N2OZnR/rdzW8GoIODARNGtyBCSCek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mz8wj/btrC4N2OZnR/rdzW8GoIODARNGtyBCSCek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fmz8wj%2FbtrC4N2OZnR%2FrdzW8GoIODARNGtyBCSCek%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;123&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;123&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;과목별로 묶어 준 다음&lt;/p&gt;
&lt;pre id=&quot;code_1653396067784&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from courses c 
inner join enrolleds e 
on c.course_id = e.course_id 
where e.is_registered = 0
group by c.course_id&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;74&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbhp8b/btrC2LdRSah/aErSwfeb9DhLbn1VSAKDf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbhp8b/btrC2LdRSah/aErSwfeb9DhLbn1VSAKDf0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbhp8b/btrC2LdRSah/aErSwfeb9DhLbn1VSAKDf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbbhp8b%2FbtrC2LdRSah%2FaErSwfeb9DhLbn1VSAKDf0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;74&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;74&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세어봐야 하니 count를 활용&lt;/p&gt;
&lt;pre id=&quot;code_1653396085188&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select count(e.is_registered) as cnt
from courses c 
inner join enrolleds e 
on c.course_id = e.course_id 
where e.is_registered = 0
group by c.course_id&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;170&quot; data-origin-height=&quot;106&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ba65vw/btrC2XSwomg/RDzGWcly3OSNhndJmJhkKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ba65vw/btrC2XSwomg/RDzGWcly3OSNhndJmJhkKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ba65vw/btrC2XSwomg/RDzGWcly3OSNhndJmJhkKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fba65vw%2FbtrC2XSwomg%2FRDzGWcly3OSNhndJmJhkKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;170&quot; height=&quot;106&quot; data-origin-width=&quot;170&quot; data-origin-height=&quot;106&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 게 몇 명인지 알 수 없으니 보기 좋게 수정!&lt;/p&gt;
&lt;pre id=&quot;code_1653396122742&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select c.course_id, count(e.is_registered) as cnt
from courses c 
inner join enrolleds e 
on c.course_id = e.course_id 
where e.is_registered = 0
group by c.course_id&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;442&quot; data-origin-height=&quot;109&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbgQzv/btrC2nqDewh/4sT1hRwHt3xlJjWQ8SzMqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbgQzv/btrC2nqDewh/4sT1hRwHt3xlJjWQ8SzMqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbgQzv/btrC2nqDewh/4sT1hRwHt3xlJjWQ8SzMqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbgQzv%2FbtrC2nqDewh%2F4sT1hRwHt3xlJjWQ8SzMqk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;442&quot; height=&quot;109&quot; data-origin-width=&quot;442&quot; data-origin-height=&quot;109&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 해도 여전히 저 course_id가 뭔지 알아보기 힘드니까 select문구를 추가!&lt;/p&gt;
&lt;pre id=&quot;code_1653396147005&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select c.course_id, c.title, count(e.is_registered) as cnt
from courses c 
inner join enrolleds e 
on c.course_id = e.course_id 
where e.is_registered = 0
group by c.course_id&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;578&quot; data-origin-height=&quot;111&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFaNA3/btrC2CA4UCI/mLdpNBKJpsgs6xaIqRKaeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFaNA3/btrC2CA4UCI/mLdpNBKJpsgs6xaIqRKaeK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFaNA3/btrC2CA4UCI/mLdpNBKJpsgs6xaIqRKaeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFaNA3%2FbtrC2CA4UCI%2FmLdpNBKJpsgs6xaIqRKaeK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;578&quot; height=&quot;111&quot; data-origin-width=&quot;578&quot; data-origin-height=&quot;111&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;짜잔~ 성공! 음 그런데 저 cnt가 어떤 걸 카운터 했는지 구분이 힘들 수 있으니 별칭을 cnt_nostart로 시작하지 않은 사람들이라고 알아 볼 수 있게 수정하자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1653396196147&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select c.course_id, c.title, count(e.is_registered) as cnt_notstart
from courses c 
inner join enrolleds e 
on c.course_id = e.course_id 
where e.is_registered = 0
group by c.course_id&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;98&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dnsZxz/btrC2hK5pAb/ITuwFU1xMkKlS0kkrBXCok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dnsZxz/btrC2hK5pAb/ITuwFU1xMkKlS0kkrBXCok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dnsZxz/btrC2hK5pAb/ITuwFU1xMkKlS0kkrBXCok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdnsZxz%2FbtrC2hK5pAb%2FITuwFU1xMkKlS0kkrBXCok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;648&quot; height=&quot;98&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;98&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;깔끔!!&lt;/p&gt;</description>
      <category>SQL</category>
      <category>error</category>
      <category>inner join</category>
      <category>spell</category>
      <category>SQL</category>
      <category>SQL error [1064] [42000]</category>
      <author>Spell</author>
      <guid isPermaLink="true">https://spell.tistory.com/38</guid>
      <comments>https://spell.tistory.com/entry/%EB%B3%B8%EA%B2%A9-%EC%BF%BC%EB%A6%AC-%EC%A7%81%EC%A0%91-%EC%9E%91%EC%84%B1%ED%95%B4%EB%B3%B4%EA%B8%B0-feat-inner-join#entry38comment</comments>
      <pubDate>Tue, 24 May 2022 21:43:38 +0900</pubDate>
    </item>
    <item>
      <title>Join 연습해보기 2 (feat. Inner Join)</title>
      <link>https://spell.tistory.com/entry/Join-%EC%97%B0%EC%8A%B5%ED%95%B4%EB%B3%B4%EA%B8%B0-2-feat-Inner-Join</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이제까지 배웠던 문법들과 함께 Join을 더 연습해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;1. checkins &lt;/span&gt;테이블에&lt;span&gt; courses &lt;/span&gt;테이블 연결해서 통계치 내보기&lt;/b&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;'&lt;/span&gt;오늘의 다짐&lt;span&gt;' &lt;/span&gt;정보에 과목 정보를 연결해 과목별&lt;span&gt; '&lt;/span&gt;오늘의 다짐&lt;span&gt;' &lt;/span&gt;개수 세기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두개의 테이블을 역시나 확인해 봐야겠지?&lt;/p&gt;
&lt;pre id=&quot;code_1653301255923&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from checkins ch&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;137&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xXqoy/btrCY53uxAx/EarjjvxVK7bBhfx3flX2d1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xXqoy/btrCY53uxAx/EarjjvxVK7bBhfx3flX2d1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xXqoy/btrCY53uxAx/EarjjvxVK7bBhfx3flX2d1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxXqoy%2FbtrCY53uxAx%2FEarjjvxVK7bBhfx3flX2d1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;137&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;137&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1653301268536&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from courses c&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;77&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7EWpy/btrCW2mpX6e/y41DF6aZeEKcyO4d9CCaQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7EWpy/btrCW2mpX6e/y41DF6aZeEKcyO4d9CCaQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7EWpy/btrCW2mpX6e/y41DF6aZeEKcyO4d9CCaQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7EWpy%2FbtrCW2mpX6e%2Fy41DF6aZeEKcyO4d9CCaQ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;77&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;77&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;course_id를 공유하고 있다. 이를 key로 연결시켜주자.&lt;/p&gt;
&lt;pre id=&quot;code_1653301290963&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from checkins ch
inner join courses c
on ch.course_id = c.course_id&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;133&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WM9sm/btrCWLLZuc1/fc47HSHO4X9w5wwpyO5XeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WM9sm/btrCWLLZuc1/fc47HSHO4X9w5wwpyO5XeK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WM9sm/btrCWLLZuc1/fc47HSHO4X9w5wwpyO5XeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWM9sm%2FbtrCWLLZuc1%2Ffc47HSHO4X9w5wwpyO5XeK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;133&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;133&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;과목별 '오늘의 다짐'의 개수를 세줘야 하니까, 일단 과목별로 묶어볼까?&lt;/p&gt;
&lt;pre id=&quot;code_1653301321174&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from checkins ch
inner join courses c
on ch.course_id = c.course_id
group by course_id&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;819&quot; data-origin-height=&quot;123&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4hzMD/btrCXk79vRc/3cJL7RKkff0IoSIjaHECVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4hzMD/btrCXk79vRc/3cJL7RKkff0IoSIjaHECVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4hzMD/btrCXk79vRc/3cJL7RKkff0IoSIjaHECVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4hzMD%2FbtrCXk79vRc%2F3cJL7RKkff0IoSIjaHECVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;819&quot; height=&quot;123&quot; data-origin-width=&quot;819&quot; data-origin-height=&quot;123&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;음?.. 에러가 떳다. group by에서 문제가 발생한거 같은데.. course_id는 양쪽 모두의 테이블에서 존재하는데 어느 쪽 테이블의 course_id인지 명확하게 애기해주지 않아서 벌어진 문제 같다. 하나를 지정해주자.&lt;/p&gt;
&lt;pre id=&quot;code_1653301364063&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from checkins ch
inner join courses c
on ch.course_id = c.course_id
group by ch.course_id&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;77&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bq57fZ/btrCY6nNrOz/xueovUdLLuB9YxRQlzH6I1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bq57fZ/btrCY6nNrOz/xueovUdLLuB9YxRQlzH6I1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bq57fZ/btrCY6nNrOz/xueovUdLLuB9YxRQlzH6I1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbq57fZ%2FbtrCY6nNrOz%2FxueovUdLLuB9YxRQlzH6I1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;77&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;77&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개수를 세주기 위한 count를 사용하자.&lt;/p&gt;
&lt;pre id=&quot;code_1653301385450&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select ch.course_id, count(*) as cnt
from checkins ch
inner join courses c
on ch.course_id = c.course_id
group by ch.course_id&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;439&quot; data-origin-height=&quot;113&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uAmyh/btrCWLyruD5/vGGNPH42EyR77xJIh4tAwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uAmyh/btrCWLyruD5/vGGNPH42EyR77xJIh4tAwK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uAmyh/btrCWLyruD5/vGGNPH42EyR77xJIh4tAwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuAmyh%2FbtrCWLyruD5%2FvGGNPH42EyR77xJIh4tAwK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;439&quot; height=&quot;113&quot; data-origin-width=&quot;439&quot; data-origin-height=&quot;113&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한번 더 나아가서 titile도 함께 보게 수정하자. 저 course_id가 무엇인지 알아보기 어려우니까. 그러면 다음과 같이 입력해보면 되겠다.&lt;/p&gt;
&lt;pre id=&quot;code_1653301415592&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select ch.course_id, c.title, count(*) as cnt
from checkins ch
inner join courses c
on ch.course_id = c.course_id
group by ch.course_id&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;573&quot; data-origin-height=&quot;106&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLbZqN/btrCW2zXFU1/SaazxOKPKYwfeiwMZe7lCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLbZqN/btrCW2zXFU1/SaazxOKPKYwfeiwMZe7lCK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLbZqN/btrCW2zXFU1/SaazxOKPKYwfeiwMZe7lCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLbZqN%2FbtrCW2zXFU1%2FSaazxOKPKYwfeiwMZe7lCK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;573&quot; height=&quot;106&quot; data-origin-width=&quot;573&quot; data-origin-height=&quot;106&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;짜잔~&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;2. point_users &lt;/span&gt;테이블에&lt;span&gt; users &lt;/span&gt;테이블 연결해서 순서대로 정렬해보기&lt;/b&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;유저의 포인트 정보가 담긴 테이블에 유저 정보를 연결해서&lt;span&gt;, &lt;/span&gt;많은 포인트를 얻은 순서대로 유저의 데이터를 뽑기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테이블 확인!&lt;/p&gt;
&lt;pre id=&quot;code_1653301459784&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from point_users pu&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1005&quot; data-origin-height=&quot;197&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bR8BJY/btrCS0J5gCd/nAjb1pmSQFnfpvVimmenjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bR8BJY/btrCS0J5gCd/nAjb1pmSQFnfpvVimmenjK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bR8BJY/btrCS0J5gCd/nAjb1pmSQFnfpvVimmenjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbR8BJY%2FbtrCS0J5gCd%2FnAjb1pmSQFnfpvVimmenjK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1005&quot; height=&quot;197&quot; data-origin-width=&quot;1005&quot; data-origin-height=&quot;197&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1653301484360&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from users u&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;206&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnUKep/btrCW1A18hM/1hXQOqg2WNhDK1yGYNGsh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnUKep/btrCW1A18hM/1hXQOqg2WNhDK1yGYNGsh0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnUKep/btrCW1A18hM/1hXQOqg2WNhDK1yGYNGsh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnUKep%2FbtrCW1A18hM%2F1hXQOqg2WNhDK1yGYNGsh0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;964&quot; height=&quot;206&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;206&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;user_id를 공유하고 있꼬, point_users에 users를 붙인다.&lt;/p&gt;
&lt;pre id=&quot;code_1653301515613&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from point_users pu
inner join users u 
on pu.user_id = u.user_id&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1120&quot; data-origin-height=&quot;128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kNI6F/btrCS0wA8jp/78N8lsaocLwveEsFSDh281/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kNI6F/btrCS0wA8jp/78N8lsaocLwveEsFSDh281/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kNI6F/btrCS0wA8jp/78N8lsaocLwveEsFSDh281/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkNI6F%2FbtrCS0wA8jp%2F78N8lsaocLwveEsFSDh281%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1120&quot; height=&quot;128&quot; data-origin-width=&quot;1120&quot; data-origin-height=&quot;128&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;많은 포인트를 얻은 순서대로 유저의 데이터를 뽑아야 하니까, 내림차순 정렬이 필요하다.&lt;/p&gt;
&lt;pre id=&quot;code_1653301552355&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from point_users pu
inner join users u 
on pu.user_id = u.user_id 
order by pu.point desc&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;136&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJx54g/btrCWM5a43b/CFftFdf7iKzLC9DQuAghcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJx54g/btrCWM5a43b/CFftFdf7iKzLC9DQuAghcK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJx54g/btrCWM5a43b/CFftFdf7iKzLC9DQuAghcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJx54g%2FbtrCWM5a43b%2FCFftFdf7iKzLC9DQuAghcK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;136&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;136&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보기가 좀 힘들다. 깔끔하게 보기위해서 다듬어야겠다. 유저의 데이터니까 user_id, point, name, email 이런식으로 보는게 편하겠지? 어느 테이블의 어느 필드인지 잘 적어줘야 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1653301600985&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select pu.user_id, u.name, u.email, pu.point
from point_users pu
inner join users u 
on pu.user_id = u.user_id 
order by pu.point desc&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;195&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vNce8/btrCXk79ZYy/lCz2F3MOeKPjAHLn1SNrFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vNce8/btrCXk79ZYy/lCz2F3MOeKPjAHLn1SNrFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vNce8/btrCXk79ZYy/lCz2F3MOeKPjAHLn1SNrFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvNce8%2FbtrCXk79ZYy%2FlCz2F3MOeKPjAHLn1SNrFk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;720&quot; height=&quot;195&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;195&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;orders &lt;/span&gt;테이블에&lt;span&gt; users &lt;/span&gt;테이블 연결해서 통계치 내보기&lt;span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;주문 정보에 유저 정보를 연결해 네이버 이메일을 사용하는 유저 중&lt;span&gt;, &lt;/span&gt;성씨별 주문건수를 세어보기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테이블 확인~&lt;/p&gt;
&lt;pre id=&quot;code_1653301633196&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from orders o&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eDYx4y/btrCVSECox4/VTeKbvPsMAoonfyTWi2xjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eDYx4y/btrCVSECox4/VTeKbvPsMAoonfyTWi2xjk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eDYx4y/btrCVSECox4/VTeKbvPsMAoonfyTWi2xjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeDYx4y%2FbtrCVSECox4%2FVTeKbvPsMAoonfyTWi2xjk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;128&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;128&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1653301647727&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from users u&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;972&quot; data-origin-height=&quot;195&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9iDOz/btrCUlmT0f6/7dEKRSRlKxjK4eKQwkgEK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9iDOz/btrCUlmT0f6/7dEKRSRlKxjK4eKQwkgEK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9iDOz/btrCUlmT0f6/7dEKRSRlKxjK4eKQwkgEK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9iDOz%2FbtrCUlmT0f6%2F7dEKRSRlKxjK4eKQwkgEK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;972&quot; height=&quot;195&quot; data-origin-width=&quot;972&quot; data-origin-height=&quot;195&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;user_id로 연결시켜주고&lt;/p&gt;
&lt;pre id=&quot;code_1653301662245&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from orders o
inner join users u 
on o.user_id = u.user_id&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1120&quot; data-origin-height=&quot;125&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZXee8/btrCUmlTJUk/tSyVpVh14sDu0lkGuZKKHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZXee8/btrCUmlTJUk/tSyVpVh14sDu0lkGuZKKHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZXee8/btrCUmlTJUk/tSyVpVh14sDu0lkGuZKKHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZXee8%2FbtrCUmlTJUk%2FtSyVpVh14sDu0lkGuZKKHK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1120&quot; height=&quot;125&quot; data-origin-width=&quot;1120&quot; data-origin-height=&quot;125&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;성씨별로 묶어주는데, naver 이메일을 사용하는 유저만 추려야 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1653301685141&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from orders o
inner join users u 
on o.user_id = u.user_id
where u.email like '%naver.com'
group by u.name&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1120&quot; data-origin-height=&quot;131&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AyF3V/btrCW0PFp3n/7k75yhkSi1afcAmv8NU0c1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AyF3V/btrCW0PFp3n/7k75yhkSi1afcAmv8NU0c1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AyF3V/btrCW0PFp3n/7k75yhkSi1afcAmv8NU0c1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAyF3V%2FbtrCW0PFp3n%2F7k75yhkSi1afcAmv8NU0c1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1120&quot; height=&quot;131&quot; data-origin-width=&quot;1120&quot; data-origin-height=&quot;131&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보기 편하게 다듬어주면서, count를 사용해서 개수를 세어준다. (별칭은 덤~)&lt;/p&gt;
&lt;pre id=&quot;code_1653301712234&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select u.name, count(u.name) as cnt
from orders o
inner join users u 
on o.user_id = u.user_id
where u.email like '%naver.com'
group by u.name&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;306&quot; data-origin-height=&quot;195&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dskLe3/btrCWLFa9lD/Ie3q1URstXCxEoBprJuIV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dskLe3/btrCWLFa9lD/Ie3q1URstXCxEoBprJuIV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dskLe3/btrCWLFa9lD/Ie3q1URstXCxEoBprJuIV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdskLe3%2FbtrCWLFa9lD%2FIe3q1URstXCxEoBprJuIV1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;306&quot; height=&quot;195&quot; data-origin-width=&quot;306&quot; data-origin-height=&quot;195&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;또 짚고 넘어갈 마지막 예시로 SQL 쿼리가 실행되는 순서!&lt;br /&gt;&lt;br /&gt;
&lt;pre id=&quot;code_1653301751969&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select u.name, count(u.name) as cnt
from orders o
inner join users u 
on o.user_id = u.user_id
where u.email like '%naver.com'
group by u.name​&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;1. &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #800000;&quot;&gt;from&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; orders o&lt;br /&gt;&lt;/span&gt;&lt;span&gt;orders &lt;/span&gt;테이블 데이터 전체를 가져오고&lt;span&gt; o&lt;/span&gt;라는 별칭을 준다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;2. &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #800000;&quot;&gt;inner&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #800000;&quot;&gt;join&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; users u &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #800000;&quot;&gt;on&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; o.user_id = u.user_id&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;users &lt;/span&gt;테이블을&lt;span&gt; orders &lt;/span&gt;테이블에 붙이는데&lt;span&gt;(&lt;/span&gt;이때 &lt;span&gt;users&lt;/span&gt;테이블은 &lt;span&gt;u&lt;/span&gt;라는 별칭을 부여한다&lt;span&gt;), orders&lt;/span&gt;테이블의&lt;span&gt; user_id&lt;/span&gt;필드와 &lt;span&gt;users&lt;/span&gt;테이블의 &lt;span&gt;user_id&lt;/span&gt;필드가 같으니 &lt;span&gt;key&lt;/span&gt;로써 서로를 붙인다&lt;span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;3. &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #800000;&quot;&gt;where&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; u.email &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #800000;&quot;&gt;like&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #008000;&quot;&gt;'%naver.com'&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;users &lt;/span&gt;테이블 &lt;span&gt;email &lt;/span&gt;필드값이&lt;span&gt; naver.com&lt;/span&gt;으로 끝나는 값만 가져오고&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;4. &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #800000;&quot;&gt;group&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #800000;&quot;&gt;by&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; u.name&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;users &lt;/span&gt;테이블의&lt;span&gt; name&lt;/span&gt;값이 같은 값들을 묶은 다음&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;5. &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #800000;&quot;&gt;select&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; u.name, &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000080;&quot;&gt;count&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(u.name) &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #800000;&quot;&gt;as&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; cnt&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;users &lt;/span&gt;테이블의&lt;span&gt; name&lt;/span&gt;필드와&lt;span&gt; name &lt;/span&gt;필드를 기준으로 묶여진 개수를 세어서 뽑아달라&lt;span&gt;!&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;Join&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;의 실행 순서는 항상&lt;span&gt; from &lt;/span&gt;과 붙어 다닌다고 생각하면 편하다&lt;span&gt;!&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>SQL</category>
      <category>inner join</category>
      <category>Join</category>
      <category>spell</category>
      <category>SQL</category>
      <author>Spell</author>
      <guid isPermaLink="true">https://spell.tistory.com/37</guid>
      <comments>https://spell.tistory.com/entry/Join-%EC%97%B0%EC%8A%B5%ED%95%B4%EB%B3%B4%EA%B8%B0-2-feat-Inner-Join#entry37comment</comments>
      <pubDate>Mon, 23 May 2022 19:30:05 +0900</pubDate>
    </item>
    <item>
      <title>Join 연습해보기 (feat. Inner Join)</title>
      <link>https://spell.tistory.com/entry/Join-%EC%97%B0%EC%8A%B5%ED%95%B4%EB%B3%B4%EA%B8%B0-feat-Inner-Join</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;orders &lt;/span&gt;테이블에&lt;span&gt; users &lt;/span&gt;테이블 연결해보기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;직접 해보기에 앞서 두 테이블을 확인 할 필요가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 테이블에 어떤 내용들이 있는지 항상 확인하는 습관을 길러야 하니까&lt;/p&gt;
&lt;pre id=&quot;code_1653300379756&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from orders o&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;123&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/F832h/btrCYwmHbUw/HISDBVcs30pVLbW6JFzrHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/F832h/btrCYwmHbUw/HISDBVcs30pVLbW6JFzrHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/F832h/btrCYwmHbUw/HISDBVcs30pVLbW6JFzrHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FF832h%2FbtrCYwmHbUw%2FHISDBVcs30pVLbW6JFzrHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;123&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;123&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1653300389073&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from users u&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;981&quot; data-origin-height=&quot;191&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNu958/btrCUmsAan0/dw9KK6lw0rFapNVyxvzrkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNu958/btrCUmsAan0/dw9KK6lw0rFapNVyxvzrkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNu958/btrCUmsAan0/dw9KK6lw0rFapNVyxvzrkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNu958%2FbtrCUmsAan0%2Fdw9KK6lw0rFapNVyxvzrkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;981&quot; height=&quot;191&quot; data-origin-width=&quot;981&quot; data-origin-height=&quot;191&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두개의 테이블에 user_id가 함께 필드로 있는 걸 알 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 user_id를 key로 활용하여 연결시키면 되겠다.&lt;/p&gt;
&lt;pre id=&quot;code_1653300418388&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from orders o
inner join users u
on o.user_id = u.user_id&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;107&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cCpKui/btrCVQUhU5d/XoIgSGbx9K67KW2gbYwKok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cCpKui/btrCVQUhU5d/XoIgSGbx9K67KW2gbYwKok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cCpKui/btrCVQUhU5d/XoIgSGbx9K67KW2gbYwKok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcCpKui%2FbtrCVQUhU5d%2FXoIgSGbx9K67KW2gbYwKok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;107&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;107&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;user_id를 기점으로 왼쪽은 orders 테이블이고, 오른쪽은 users 테이블의 내용임을 알 수 있다. users_id를 key로 두 테이블을 붙인 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;일단 왜 inner join으로 했는가? inner join이 left join보다 조금 더 쉽게 때문에, 이를 좀 더 숙달하고 나서 left join으로 넘어가기 위함이다.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;단적으로 이런 차이가 날 수 있는데,&amp;nbsp;left join으로 생각해보면 A에 B를 붙이는데, 없으면 null로 보여주는 것이다. 그러니 누구에게 누구를 붙이는 이 순서가 굉장히 중요하다. 하지만 inner join은 순서가 바뀌어도 교집합을 나타냄으로 상관이 없다.&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;checkins &lt;/span&gt;테이블에&lt;span&gt; users &lt;/span&gt;테이블 연결해보기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이것도 먼저 두 테이블을 확인해 봐야겠지?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1653300592626&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from checkins ch&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;142&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dqBixa/btrCVSqYPig/jS8Il77ASiegS74rGgS1D0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dqBixa/btrCVSqYPig/jS8Il77ASiegS74rGgS1D0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dqBixa/btrCVSqYPig/jS8Il77ASiegS74rGgS1D0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdqBixa%2FbtrCVSqYPig%2FjS8Il77ASiegS74rGgS1D0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;142&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;142&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1653300605131&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from users u&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;969&quot; data-origin-height=&quot;195&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c6WUX7/btrCW4jWjah/SH1f5pVv9fyQkebjnmvvjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c6WUX7/btrCW4jWjah/SH1f5pVv9fyQkebjnmvvjK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c6WUX7/btrCW4jWjah/SH1f5pVv9fyQkebjnmvvjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc6WUX7%2FbtrCW4jWjah%2FSH1f5pVv9fyQkebjnmvvjK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;969&quot; height=&quot;195&quot; data-origin-width=&quot;969&quot; data-origin-height=&quot;195&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 key는 user_id가 양쪽 테이블 필드에 존재하고, checkins 테이블에 users 테이블을 붙이는 거니까..&lt;/p&gt;
&lt;pre id=&quot;code_1653300637814&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from checkins ch
inner join users u 
on ch.user_id = u.user_id&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;121&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tpEUg/btrCW1Oybci/lTNht7VPTMGpvXoIPXSHvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tpEUg/btrCW1Oybci/lTNht7VPTMGpvXoIPXSHvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tpEUg/btrCW1Oybci/lTNht7VPTMGpvXoIPXSHvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtpEUg%2FbtrCW1Oybci%2FlTNht7VPTMGpvXoIPXSHvK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;121&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;121&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;enrolleds &lt;/span&gt;&lt;span&gt;테이블에&lt;span&gt; courses &lt;/span&gt;테이블 연결해보기&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;역시나 테이블 부터 확인!&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1653300673470&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from enrolleds e&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;160&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kGV1s/btrCVdIW93I/d5YDiQP7pueSVnpapzNKxk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kGV1s/btrCVdIW93I/d5YDiQP7pueSVnpapzNKxk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kGV1s/btrCVdIW93I/d5YDiQP7pueSVnpapzNKxk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkGV1s%2FbtrCVdIW93I%2Fd5YDiQP7pueSVnpapzNKxk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;160&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;160&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1653300685382&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from courses c&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;79&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uCj2M/btrCYwmHzQS/5I3n7h9gAgK3ZgtVcZZH81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uCj2M/btrCYwmHzQS/5I3n7h9gAgK3ZgtVcZZH81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uCj2M/btrCYwmHzQS/5I3n7h9gAgK3ZgtVcZZH81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuCj2M%2FbtrCYwmHzQS%2F5I3n7h9gAgK3ZgtVcZZH81%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;79&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;79&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;key로는 course_id를 사용하면 될 것 같다. 그리고 enrolleds에 courses를 붙일꺼니까..&lt;/p&gt;
&lt;pre id=&quot;code_1653300714212&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from enrolleds e
inner join courses c
on e.course_id = c.course_id&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;126&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HgZAA/btrCXmkAsqi/7sFMSwGbAgGQfhXu9RUaGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HgZAA/btrCXmkAsqi/7sFMSwGbAgGQfhXu9RUaGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HgZAA/btrCXmkAsqi/7sFMSwGbAgGQfhXu9RUaGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHgZAA%2FbtrCXmkAsqi%2F7sFMSwGbAgGQfhXu9RUaGK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;126&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;126&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;마지막 예시로 한번 더 짚고 넘어가야 할 해당 SQL 쿼리가 실행되는 순서!&lt;br /&gt;
&lt;pre id=&quot;code_1653301166672&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from enrolleds e
inner join courses c
on e.course_id = c.course_id​&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;위의&amp;nbsp;쿼리가&amp;nbsp;실행되는&amp;nbsp;순서는&amp;nbsp;from &amp;rarr; join &amp;rarr; select&lt;br /&gt;1.&amp;nbsp;&lt;b&gt;from&amp;nbsp;enrolleds e&lt;/b&gt;&amp;nbsp;: enrolleds&amp;nbsp;테이블 데이터 전체를 가져오고&lt;br /&gt;2.&amp;nbsp;&lt;b&gt;inner&amp;nbsp;join&amp;nbsp;courses c&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;on&amp;nbsp;e.course_id = c.course_id&lt;/b&gt;&lt;br /&gt;courses를&amp;nbsp;enrolleds&amp;nbsp;테이블에 붙이는데, enrolleds&amp;nbsp;테이블의&amp;nbsp;course_id와 동일한&amp;nbsp;course_id를 갖는&amp;nbsp;courses의 테이블을 붙이고!&lt;br /&gt;3.&amp;nbsp;&lt;b&gt;select&amp;nbsp;*&lt;/b&gt; :&amp;nbsp;붙여진 모든 데이터를 출력!&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;항상&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt; &lt;span&gt;from &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;에&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;들어간&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;테이블을&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;기준으로&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;다른&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;테이블이&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;붙는다고&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;생각하면&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;좋다&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;!!!!&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>SQL</category>
      <category>inner join</category>
      <category>Join</category>
      <category>spell</category>
      <category>SQL</category>
      <author>Spell</author>
      <guid isPermaLink="true">https://spell.tistory.com/36</guid>
      <comments>https://spell.tistory.com/entry/Join-%EC%97%B0%EC%8A%B5%ED%95%B4%EB%B3%B4%EA%B8%B0-feat-Inner-Join#entry36comment</comments>
      <pubDate>Mon, 23 May 2022 19:15:51 +0900</pubDate>
    </item>
    <item>
      <title>Join (Left Join / Inner Join)</title>
      <link>https://spell.tistory.com/entry/Join-Left-Join-Inner-Join</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Join이란? 두 테이블의 공통된 정보(key값)를 기준으로 테이블을 연결해서 한 테이블처럼 보는 것을 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 user_id 필드를 기준으로 users 테이블과 orders 테이블을 연결해서 한 눈에 보고 싶어! 같은 거다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럴 때를 대비해서 무언가 연결된 정보가 있을 때, user_id처럼 동일한 이름과 정보가 담긴 필드를 두 테이블에 똑같이 담아 놓는다. 이런 필드를 두 테이블을 연결시켜주는 열쇠라는 의미로 'key'라고 부른다는 걸 잊지 말자!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Left Join&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왼쪽에 있는 테이블을 기준으로 테이블을 붙인다는 의미이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;509&quot; data-origin-height=&quot;342&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kEqZg/btrCSZ3B82m/1pi3Xcg06Gx8OBDV72Vz6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kEqZg/btrCSZ3B82m/1pi3Xcg06Gx8OBDV72Vz6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kEqZg/btrCSZ3B82m/1pi3Xcg06Gx8OBDV72Vz6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkEqZg%2FbtrCSZ3B82m%2F1pi3Xcg06Gx8OBDV72Vz6K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;509&quot; height=&quot;342&quot; data-origin-width=&quot;509&quot; data-origin-height=&quot;342&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 A와 B는 각각의 테이블을 의미하고, 둘 사이의 겹치는 부분은 테이블 A와 B의 key 값이 연결되는 부분이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Inner Join&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;511&quot; data-origin-height=&quot;344&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/r7C3T/btrCMXGd2hm/1SezkGqOEVrA18auYkB4fk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/r7C3T/btrCMXGd2hm/1SezkGqOEVrA18auYkB4fk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/r7C3T/btrCMXGd2hm/1SezkGqOEVrA18auYkB4fk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fr7C3T%2FbtrCMXGd2hm%2F1SezkGqOEVrA18auYkB4fk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;511&quot; height=&quot;344&quot; data-origin-width=&quot;511&quot; data-origin-height=&quot;344&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서도 A와 B는 각각의 테이블을 의미하고, 두 테이블의 교집합을 이야기하고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;직접 join 사용해보기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래의 사진은 현재 실습하고 있는 데이터의 테이블들이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;681&quot; data-origin-height=&quot;561&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3Zt5u/btrCLzsl1em/9dRLpAvzcKI6O74V5nZoEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3Zt5u/btrCLzsl1em/9dRLpAvzcKI6O74V5nZoEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3Zt5u/btrCLzsl1em/9dRLpAvzcKI6O74V5nZoEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3Zt5u%2FbtrCLzsl1em%2F9dRLpAvzcKI6O74V5nZoEK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;537&quot; height=&quot;442&quot; data-origin-width=&quot;681&quot; data-origin-height=&quot;561&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 users테이블과 point_users테이블을 함께 붙여볼꺼다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;users테이블 부터 확인해보자. 별칭은 u로 주었다.&lt;/p&gt;
&lt;pre id=&quot;code_1653229203917&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from users u&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;977&quot; data-origin-height=&quot;239&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/duxioO/btrCOrMV4D2/KlEitMXXt4gDeU8Ri9iwh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/duxioO/btrCOrMV4D2/KlEitMXXt4gDeU8Ri9iwh0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/duxioO/btrCOrMV4D2/KlEitMXXt4gDeU8Ri9iwh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FduxioO%2FbtrCOrMV4D2%2FKlEitMXXt4gDeU8Ri9iwh0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;977&quot; height=&quot;239&quot; data-origin-width=&quot;977&quot; data-origin-height=&quot;239&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;point_users테이블도 확인해보자. 별칭은 pu로 주었다.&lt;/p&gt;
&lt;pre id=&quot;code_1653229245075&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from point_users pu&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1006&quot; data-origin-height=&quot;231&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dDsyh7/btrCMYrADkT/9AKq0uKhmK4IyY2gTWcsEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dDsyh7/btrCMYrADkT/9AKq0uKhmK4IyY2gTWcsEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dDsyh7/btrCMYrADkT/9AKq0uKhmK4IyY2gTWcsEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdDsyh7%2FbtrCMYrADkT%2F9AKq0uKhmK4IyY2gTWcsEk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1006&quot; height=&quot;231&quot; data-origin-width=&quot;1006&quot; data-origin-height=&quot;231&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 테이블에 함께[ 있는 필드는 user_id가 있네? 이를 기점으로 연결해주면 좋겠지?&lt;/p&gt;
&lt;pre id=&quot;code_1653229275306&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from users u
left join point_users pu
on u.user_id = pu.user_id&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;별칭을 줌으로써 알아보기 쉽게 작성했고, 풀이해보자면 &quot;left join으로 point_users테이블로 left join을 한다고 작성했다. 무엇을 기준으로? u.user_id와 pu.user_id로 연결하자.&quot; 라는 의미이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(별칭으로 인하여 u.user_id는 users테이블의 user_id, pu_user_id는 point_users테이블의 user_id라는 뜻이다)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;152&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AUFNd/btrCMXGekfN/OLpvHrm5bKkD7dt0bIqIC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AUFNd/btrCMXGekfN/OLpvHrm5bKkD7dt0bIqIC1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AUFNd/btrCMXGekfN/OLpvHrm5bKkD7dt0bIqIC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAUFNd%2FbtrCMXGekfN%2FOLpvHrm5bKkD7dt0bIqIC1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;152&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;152&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 안에 null값들은 &quot;비어있다, 매칭이 안된다&quot; 라는 뜻읻다. 모든 유저가 포인트를 가지고 있는게 아니기에 해당 정보가 비어 있는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 left join을 inner join으로 변경하면?&lt;/p&gt;
&lt;pre id=&quot;code_1653229463031&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from users u
inner join point_users pu
on u.user_id = pu.user_id&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;124&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bh7blu/btrCOr0uxeo/08NgkvZOs3BfPVJq8Olwm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bh7blu/btrCOr0uxeo/08NgkvZOs3BfPVJq8Olwm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bh7blu/btrCOr0uxeo/08NgkvZOs3BfPVJq8Olwm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbh7blu%2FbtrCOr0uxeo%2F08NgkvZOs3BfPVJq8Olwm0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;124&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;124&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;inner join은 교집합을 뜻하기에, poin가 존재하는 user_id를 기준으로 결과값을 보여준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>SQL</category>
      <category>inner join</category>
      <category>Join</category>
      <category>LEFT JOIN</category>
      <category>spell</category>
      <category>SQL</category>
      <author>Spell</author>
      <guid isPermaLink="true">https://spell.tistory.com/35</guid>
      <comments>https://spell.tistory.com/entry/Join-Left-Join-Inner-Join#entry35comment</comments>
      <pubDate>Sun, 22 May 2022 23:25:42 +0900</pubDate>
    </item>
    <item>
      <title>Join을 왜 배우고 왜 써야하는가?</title>
      <link>https://spell.tistory.com/entry/Join%EC%9D%84-%EC%99%9C-%EB%B0%B0%EC%9A%B0%EA%B3%A0-%EC%99%9C-%EC%8D%A8%EC%95%BC%ED%95%98%EB%8A%94%EA%B0%80</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Join이라는 문법은 테이블과 테이블을 붙이는 거다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;거의 모든 쿼리에 join이 들어가고 실무에서 항상 사용한다고 생각해도 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약, 가지고 있는 데이터 중 '오늘의 다짐'을 남긴 회원의 이름을 알아야 한다. 이유는 '오늘의 다짐' 이벤트 당첨자를 선정하여 특정 상품을 기프티콘으로 지급해야 하는 상황이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다면 일단 '오늘의 다짐'테이블을 불러와서 살펴보자.&lt;/p&gt;
&lt;pre id=&quot;code_1653228540029&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from checkins c&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;118&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brSEgF/btrCRQy5jQ7/FDOLWnz32nU9RjPy6tsQk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brSEgF/btrCRQy5jQ7/FDOLWnz32nU9RjPy6tsQk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brSEgF/btrCRQy5jQ7/FDOLWnz32nU9RjPy6tsQk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrSEgF%2FbtrCRQy5jQ7%2FFDOLWnz32nU9RjPy6tsQk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;118&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;118&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 테이블에서는 users_id만 존재하고 name이 존재하지 않는다. 하지만 이름도 알아야 하는걸?.. 어쩌지?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반대로 users 테이블에서는?&lt;/p&gt;
&lt;pre id=&quot;code_1653228573866&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from users u&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;970&quot; data-origin-height=&quot;197&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bN812K/btrCJaS96Zo/1ZvCuSsaMHgmvdvyN0Wru0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bN812K/btrCJaS96Zo/1ZvCuSsaMHgmvdvyN0Wru0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bN812K/btrCJaS96Zo/1ZvCuSsaMHgmvdvyN0Wru0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbN812K%2FbtrCJaS96Zo%2F1ZvCuSsaMHgmvdvyN0Wru0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;970&quot; height=&quot;197&quot; data-origin-width=&quot;970&quot; data-origin-height=&quot;197&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 유저 id별로 name과 email이 포함되어 있다. 하지만 여기에는 '오늘의 다짐'의 자료가 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국 이 두개의 테이블을 매칭시켜 확인해 봐야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 배웠던 것만 활용하려면 checkins 테이블을 보고 user_id를 복사해서 다시 where절로 users테이블에 치고.. 확인하고 해야 하는데, join을 활용한다면 이를 좀 더 손쉽게 할 수 있는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 그림처럼 말이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;189&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGU7VN/btrCQvhDS4b/PkE5WoNxEwnfUzBhGRytwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGU7VN/btrCQvhDS4b/PkE5WoNxEwnfUzBhGRytwk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGU7VN/btrCQvhDS4b/PkE5WoNxEwnfUzBhGRytwk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGU7VN%2FbtrCQvhDS4b%2FPkE5WoNxEwnfUzBhGRytwk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;189&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;189&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자세히보면 위의 그림처럼 두개의 테이블일 붙여서 '오늘의 다짐'도 바로 볼 수 있고, 해당 user_id를 가지는 회원의 name과 email도 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아니 그럼 왜 테이블을 이렇게 나눠 놓는 거야? 그냥 애초부터 이렇게 한번에 묶어 두면 보기 좋지않아?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라는 의문을 가질 수 있다. 이에 대한 답변으로는..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테이블은 기본적으로 한 목적에 맞는 것들만 모아 두는 것이 가장 좋다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 테이블을 나눠서 보관하는건데, 회원 정보는 회원 정보끼리! 수강정보는 수강정보끼리! 결제정보는 결제정보끼리 등등!! 이게 실제로 웹서비스가 동작하는데 있어서 훨씬 더 편하고, 수정을 함에 있어서 문제가 많이 생기지 않게 하기 위해서라고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 뭘로 이 두개 테이블을 이을 수 있는가?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 필요한게 기준이다. 예를 들어 실습하고 있는 데이터에서 users테이블에도 user_id가 있고, checkins테이블에도 user_id가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 둘을 활용해서 이어주는 것이다. 이런 필드를 두 테이블을 연결시켜주는 열쇠 라는 의미로 'key'라고 부른다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 불편한 사항들을 짧은 join 쿼리 한 줄만 더 쓰면, 한번의 쿼리로 이렇게 정보들을 한 눈에 볼 수 있다.&lt;/p&gt;</description>
      <category>SQL</category>
      <category>Join</category>
      <category>spell</category>
      <category>SQL</category>
      <author>Spell</author>
      <guid isPermaLink="true">https://spell.tistory.com/34</guid>
      <comments>https://spell.tistory.com/entry/Join%EC%9D%84-%EC%99%9C-%EB%B0%B0%EC%9A%B0%EA%B3%A0-%EC%99%9C-%EC%8D%A8%EC%95%BC%ED%95%98%EB%8A%94%EA%B0%80#entry34comment</comments>
      <pubDate>Sun, 22 May 2022 23:15:42 +0900</pubDate>
    </item>
    <item>
      <title>별칭을 사용하여 group by, order by, where 연습해보기</title>
      <link>https://spell.tistory.com/entry/%EB%B3%84%EC%B9%AD%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC-group-by-order-by-where-%EC%97%B0%EC%8A%B5%ED%95%B4%EB%B3%B4%EA%B8%B0</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;네이버 이메일을 사용하여 앱개발 종합반을 신청한 주문의 결제수단별 주문건수 세어보기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실습으로 위의 내용을 도출하기 위해 작성해보기 연습을 해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 어느 테이블이 해당 내용의 데이터를 뽑아내는데 적절한지 살펴보자.&lt;/p&gt;
&lt;pre id=&quot;code_1653227980432&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from orders&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;102&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/47y8A/btrCS1mO0k4/Vz3w39f9IIKHDSpsyeBmGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/47y8A/btrCS1mO0k4/Vz3w39f9IIKHDSpsyeBmGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/47y8A/btrCS1mO0k4/Vz3w39f9IIKHDSpsyeBmGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F47y8A%2FbtrCS1mO0k4%2FVz3w39f9IIKHDSpsyeBmGK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;102&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;102&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;orders테이블이 적당한 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가로 앱개발 종합반을 신청한 부분만 필요하니, where문구로 선택해주자.&lt;/p&gt;
&lt;pre id=&quot;code_1653228118049&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from orders o
where o.course_title = '앱개발 종합반'&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;115&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckfRh8/btrCMYyiUMm/puYAG5mvcvVvKIEhiFgoz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckfRh8/btrCMYyiUMm/puYAG5mvcvVvKIEhiFgoz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckfRh8/btrCMYyiUMm/puYAG5mvcvVvKIEhiFgoz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FckfRh8%2FbtrCMYyiUMm%2FpuYAG5mvcvVvKIEhiFgoz1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;115&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;115&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 결제수단별로 묶어 주는게 좋겠지?&lt;/p&gt;
&lt;pre id=&quot;code_1653228141795&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from orders o
where o.course_title = '앱개발 종합반'
group by payment_method&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;107&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d00UC2/btrCOLedNIg/2S1vRK1RGLAOixHoPCzft1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d00UC2/btrCOLedNIg/2S1vRK1RGLAOixHoPCzft1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d00UC2/btrCOLedNIg/2S1vRK1RGLAOixHoPCzft1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd00UC2%2FbtrCOLedNIg%2F2S1vRK1RGLAOixHoPCzft1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;107&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;107&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 naver를 사용하는 email 것들로만 추려보자. 아마 like 패턴을 사용하면 될꺼같다.&lt;/p&gt;
&lt;pre id=&quot;code_1653228176723&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from orders o
where o.course_title = '앱개발 종합반'
like email = '%naver.com'
group by payment_method&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;548&quot; data-origin-height=&quot;144&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bya3K2/btrCUmK1fTq/kyN4SVXZ4aGrneplEGhRL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bya3K2/btrCUmK1fTq/kyN4SVXZ4aGrneplEGhRL0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bya3K2/btrCUmK1fTq/kyN4SVXZ4aGrneplEGhRL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbya3K2%2FbtrCUmK1fTq%2FkyN4SVXZ4aGrneplEGhRL0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;548&quot; height=&quot;144&quot; data-origin-width=&quot;548&quot; data-origin-height=&quot;144&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어우 더블 벨류라는 &lt;span style=&quot;color: #ee2323;&quot;&gt;오류&lt;/span&gt;가 뜬다. where절을 수정해주고 새로 쿼리를 작성해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;and를 활용해서 새로 작성해보는게 좋을 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새로 작성하는 마음으로 naver email을 사용한 것들로 다시 추려보자.&lt;/p&gt;
&lt;pre id=&quot;code_1653228223146&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from orders o
where o.email like '%naver.com'&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;136&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0DD1C/btrCMXfbzak/oUKOpfd2wXPx5IyjyICamK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0DD1C/btrCMXfbzak/oUKOpfd2wXPx5IyjyICamK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0DD1C/btrCMXfbzak/oUKOpfd2wXPx5IyjyICamK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0DD1C%2FbtrCMXfbzak%2FoUKOpfd2wXPx5IyjyICamK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;136&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;136&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;orders테이블에서 email이 naver인 것들로 추렸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 중에서 '앱개발 종합반'으로 추가로 추려줘야 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1653228278994&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from orders o
where o.email like '%naver.com'
and o.course_title = '앱개발 종합반'&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;122&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biyQPA/btrCQ7tTo5Y/dK9juPmNxpGoTUSSNAI8N1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biyQPA/btrCQ7tTo5Y/dK9juPmNxpGoTUSSNAI8N1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biyQPA/btrCQ7tTo5Y/dK9juPmNxpGoTUSSNAI8N1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiyQPA%2FbtrCQ7tTo5Y%2FdK9juPmNxpGoTUSSNAI8N1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;122&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;122&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;email이 naver이면서 course_title이 '앱개발 종합반'인 데이터로 추려졌다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 결제수단별로 묶어주고&lt;/p&gt;
&lt;pre id=&quot;code_1653228313569&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from orders o
where o.email like '%naver.com'
and o.course_title = '앱개발 종합반'
group by o.payment_method&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;100&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWjb4Y/btrCOKTVyhw/Wa5ALr9i2CQWo4OZ8I9Tc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWjb4Y/btrCOKTVyhw/Wa5ALr9i2CQWo4OZ8I9Tc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWjb4Y/btrCOKTVyhw/Wa5ALr9i2CQWo4OZ8I9Tc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWjb4Y%2FbtrCOKTVyhw%2FWa5ALr9i2CQWo4OZ8I9Tc1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;100&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;100&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;count로 결제수단별 주문건수를 세어 줘야겠다&lt;/p&gt;
&lt;pre id=&quot;code_1653228347231&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select o.payment_method, count(*)
from orders o
where o.email like '%naver.com'
and o.course_title = '앱개발 종합반'
group by o.payment_method&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;450&quot; data-origin-height=&quot;161&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oXyus/btrCS0nTZrg/FSbW2QijtWSat2kLejKIS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oXyus/btrCS0nTZrg/FSbW2QijtWSat2kLejKIS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oXyus/btrCS0nTZrg/FSbW2QijtWSat2kLejKIS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoXyus%2FbtrCS0nTZrg%2FFSbW2QijtWSat2kLejKIS0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;450&quot; height=&quot;161&quot; data-origin-width=&quot;450&quot; data-origin-height=&quot;161&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좀 더 보기 좋게 오름차순으로 정렬 및 count에 별칭을 달아주자.&lt;/p&gt;
&lt;pre id=&quot;code_1653228372625&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select o.payment_method, count(*) as cnt
from orders o
where o.email like '%naver.com'
and o.course_title = '앱개발 종합반'
group by o.payment_method
order by o.payment_method desc&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;425&quot; data-origin-height=&quot;147&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RfeHr/btrCMYyi6kN/iztk2xwPZAVJ23sUW8EKXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RfeHr/btrCMYyi6kN/iztk2xwPZAVJ23sUW8EKXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RfeHr/btrCMYyi6kN/iztk2xwPZAVJ23sUW8EKXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRfeHr%2FbtrCMYyi6kN%2Fiztk2xwPZAVJ23sUW8EKXk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;425&quot; height=&quot;147&quot; data-origin-width=&quot;425&quot; data-origin-height=&quot;147&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;호우! 성공!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>SQL</category>
      <category>alias</category>
      <category>and</category>
      <category>group by</category>
      <category>order by</category>
      <category>spell</category>
      <category>SQL</category>
      <category>where</category>
      <category>별칭</category>
      <author>Spell</author>
      <guid isPermaLink="true">https://spell.tistory.com/33</guid>
      <comments>https://spell.tistory.com/entry/%EB%B3%84%EC%B9%AD%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC-group-by-order-by-where-%EC%97%B0%EC%8A%B5%ED%95%B4%EB%B3%B4%EA%B8%B0#entry33comment</comments>
      <pubDate>Sun, 22 May 2022 23:06:58 +0900</pubDate>
    </item>
    <item>
      <title>SQL 별칭 기능 (Alias)</title>
      <link>https://spell.tistory.com/entry/SQL-%EB%B3%84%EC%B9%AD-%EA%B8%B0%EB%8A%A5-Alias</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;쿼리가 점점 길어지면 헷갈리는 일이 자주 발생한다. 그래서 SQL은 Alias라는 별칭 기능을 지원한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1653227598402&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from orders
where course_title = '앱개발 종합반'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;orders 테이블에서 '앱개발 종합반'만 보고 싶어서 where절을 이용하여 확인해보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 쿼리가 길어지게 되면 이 course_title이 어느 테이블의 필드인거지? 라는 의문과 동시에 헷갈릴 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럴 경우 다음과 같이 별칭을 정해줄 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1653227650412&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from orders o
where o.course_title = '앱개발 종합반'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;from orders 옆에 띄워쓰기 후 o라는 별칭을 입력했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;그러면 앞으로 orders를 o라고도 부르겠다&quot; 라는 말이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 아래 where절에는 o.course_title이라고 적어줘서 어느 테이블의 course_title인지 구분이 쉽게 작성할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 별칭은 어느 알파벳으로도 가능하지만(예를들어 a나 ab등도 가능하다), 보통 알파벳 한 글자 아니면 두 글자로 굉장히 짧게 쓴다. 물론 별칭을 정할 때 해당 테이블이 연상될 수 있도록 정해주는게 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조금 더 구체적으로 쿼리를 지시내릴 수 있는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 또 다른 별칭을 줄 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 payment_method로 묶어주고 payment_method당 카운터가 몇 개인지 보기로 결정했다.&lt;/p&gt;
&lt;pre id=&quot;code_1653227797406&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select payment_method, count(*)
from orders o
where o.course_title = '앱개발 종합반'
group by payment_method&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;450&quot; data-origin-height=&quot;163&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZMAlq/btrCUmxudAR/wKWMGDyjC9bbMXI5iX3HoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZMAlq/btrCUmxudAR/wKWMGDyjC9bbMXI5iX3HoK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZMAlq/btrCUmxudAR/wKWMGDyjC9bbMXI5iX3HoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZMAlq%2FbtrCUmxudAR%2FwKWMGDyjC9bbMXI5iX3HoK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;450&quot; height=&quot;163&quot; data-origin-width=&quot;450&quot; data-origin-height=&quot;163&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 그림처럼 결과가 나오는데, count(*)이라는 이름으로 결과가 나온다. 이를 보기가 안 좋으면 'as'를 사용하여 별칭을 정할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;as를 활용하여 cnt라는 별칭을 사용한다면, 다음과 같다.&lt;/p&gt;
&lt;pre id=&quot;code_1653227841707&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select payment_method, count(*) as cnt
from orders o
where o.course_title = '앱개발 종합반'
group by payment_method&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;403&quot; data-origin-height=&quot;194&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/x4duI/btrCQvWfLtO/NrQxgVmsZrhdCcMMzdncjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/x4duI/btrCQvWfLtO/NrQxgVmsZrhdCcMMzdncjK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/x4duI/btrCQvWfLtO/NrQxgVmsZrhdCcMMzdncjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fx4duI%2FbtrCQvWfLtO%2FNrQxgVmsZrhdCcMMzdncjK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;403&quot; height=&quot;194&quot; data-origin-width=&quot;403&quot; data-origin-height=&quot;194&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>SQL</category>
      <category>alias</category>
      <category>spell</category>
      <category>SQL</category>
      <category>별칭</category>
      <author>Spell</author>
      <guid isPermaLink="true">https://spell.tistory.com/32</guid>
      <comments>https://spell.tistory.com/entry/SQL-%EB%B3%84%EC%B9%AD-%EA%B8%B0%EB%8A%A5-Alias#entry32comment</comments>
      <pubDate>Sun, 22 May 2022 22:58:05 +0900</pubDate>
    </item>
  </channel>
</rss>