<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>SQL on Ingenboy.inc</title>
    <link>https://blog.ingenboy.com/categories/sql/</link>
    <description>Recent content in SQL on Ingenboy.inc</description>
    <image>
      <title>Ingenboy.inc</title>
      <url>https://blog.ingenboy.com/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</url>
      <link>https://blog.ingenboy.com/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</link>
    </image>
    <generator>Hugo -- 0.152.2</generator>
    <language>en</language>
    <lastBuildDate>Thu, 20 Jun 2024 10:01:50 +0900</lastBuildDate>
    <atom:link href="https://blog.ingenboy.com/categories/sql/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>About_JOIN_of_SQL</title>
      <link>https://blog.ingenboy.com/post/about_join_of_sql/</link>
      <pubDate>Thu, 20 Jun 2024 10:01:50 +0900</pubDate>
      <guid>https://blog.ingenboy.com/post/about_join_of_sql/</guid>
      <description>&lt;h1 id=&#34;ことはじめ&#34;&gt;ことはじめ&lt;/h1&gt;
&lt;p&gt;チーム開発演習で、SpringBootのMapperファイルを書いていたんですよね。Mapper.xmlってやつ。
んで、ここがおかしくてバグが生じていたんだけど、JOINについてちゃんと理解していなかったからだった。
JOINには色々あってさ、inner joinとかouter joinとか。
たくさんのテーブルを繋げまっくる時って、どのJOINにするかが大事って話だ。&lt;/p&gt;
&lt;h1 id=&#34;まずはすごくわかりやすい図があるのでそれで学んでくれ&#34;&gt;まずはすごくわかりやすい図があるのでそれで学んでくれ&lt;/h1&gt;
&lt;p&gt;&lt;img alt=&#34;Alt text&#34; loading=&#34;lazy&#34; src=&#34;https://www.codeproject.com/KB/database/Visual_SQL_Joins/Visual_SQL_JOINS_V2.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;left-joinとinner-joinをミスっていた&#34;&gt;Left JoinとInner Joinをミスっていた。&lt;/h1&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;  SELECT
  I.ITEM_ID,
  I.ITEM_NAME,
  I.DESCRIPTION,
  I.PRICE,
  I.IMAGE AS ITEM_IMAGE,
  I.UPDATED_AT AS ITEM_UPDATE_AT,
  I.CREATED_AT AS ITEM_CREATED_AT,
  I.DELETE_FLAG AS ITEM_DELETE_FLAG,
  COUNT(I.ITEM_ID = L.ITEM_ID) AS LIKE_COUNT,
  U.USER_ID,
  U.EMAIL,
  U.PASSWORD,
  U.PROFILE,
  U.IMAGE AS USER_IMAGE,
  U.DELETE_FLAG AS USER_DELETE_FLAG,
  U.UPDATED_AT AS USER_UPDATED_AT,
  U.CREATED_AT AS USER_CREATED_AT,
  U.USER_NAME,
  C.CATEGORY_ID,
  C.CATEGORY_NAME,
  C.UPDATED_AT AS CATEGORY_UPDATED_AT,
  C.CREATED_AT AS CATEGORY_CREATED_AT
  FROM
  ITEMS I
  LEFT OUTER JOIN USERS U
  ON I.USER_ID = U.USER_ID
  LEFT OUTER JOIN CATEGORIES C
  ON I.CATEGORY_ID = C.CATEGORY_ID
  LEFT OUTER JOIN LIKES L
  ON I.ITEM_ID = L.ITEM_ID
  WHERE I.ITEM_ID = #{itemId}
  GROUP BY I.ITEM_ID
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これ長いけど非常にいいSQLだよね。学ぶことがいっぱいある。それは置いておいて、ここのLEFT OUTER JOINのところ、普通のJOINにすると共通部分しか出て来なくなってしまうんだよね。
で、どこに問題が潜んでいるかというと、&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
