<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" ><channel><title>Rpsl &#187; join</title> <atom:link href="http://blog.rpsl.info/tag/join/feed" rel="self" type="application/rss+xml" /><link>http://blog.rpsl.info</link> <description>Очень остроумная надпись</description> <lastBuildDate>Thu, 09 Sep 2010 21:02:39 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.0</generator> <item><title>SQL Joins Виды, типы, различия</title><link>http://blog.rpsl.info/2009/07/sql-joins-vidy-tipy-razlichiya.html</link> <comments>http://blog.rpsl.info/2009/07/sql-joins-vidy-tipy-razlichiya.html#comments</comments> <pubDate>Mon, 27 Jul 2009 18:56:43 +0000</pubDate> <dc:creator>Rpsl</dc:creator> <category><![CDATA[Полезное]]></category> <category><![CDATA[Статьи]]></category> <category><![CDATA[join]]></category> <category><![CDATA[mysql]]></category> <category><![CDATA[sql]]></category><guid isPermaLink="false">http://blog.rpsl.info/?p=307</guid> <description><![CDATA[В первую очередь шпаргалка для себя, но надеюсь кому нибудь окажется полезным. Для начала оговорим, что у нас есть две таблицы: Table A и Table B: id name id name &#8212; ----&#160;&#8212; ---- 1 Pirate 1 Rutabaga 2 Monkey 2 Pirate 3 Ninja 3 Darth Vader 4 Spaghetti 4 Ninja Теперь можно рассмотреть, варианты и [...]]]></description> <content:encoded><![CDATA[<p>В первую очередь шпаргалка для себя, но надеюсь кому нибудь окажется полезным.</p><p>Для начала оговорим, что у нас есть две таблицы: <strong>Table A</strong> и <strong>Table B</strong>:</p><blockquote><p>id name       id  name<br /> &mdash; ----&nbsp;&mdash;  ----<br /> 1 <span style="color: red;">Pirate</span> 1   Rutabaga<br /> 2  Monkey     2 <span style="color: red;">Pirate</span><br /> 3 <span style="color: red;">Ninja</span> 3   Darth Vader<br /> 4  Spaghetti  4 <span style="color: red;">Ninja<br /> </span></p></blockquote><p>Теперь можно рассмотреть, варианты и различия возможных <a href="http://blog.rpsl.info/tag/join" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with join">JOIN</a> запросов.</p><p><strong>Inner <a href="http://blog.rpsl.info/tag/join" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with join">join</a></strong> выведет записи, которые соответствуют  таблице A и таблице B.</p><blockquote><p><a href="http://blog.rpsl.info/wp-content/uploads/2009/07/join-inner.png" class="highslide-image" onclick="return hs.expand(this);"><img class="alignright size-thumbnail wp-image-308" title="join-inner" src="http://blog.rpsl.info/wp-content/uploads/2009/07/join-inner-150x150.png" alt="join inner 150x150 SQL Joins Виды, типы, различия." width="150" height="150" /></a></p><p>SELECT * FROM TableA<br /> <strong>INNER <a href="http://blog.rpsl.info/tag/join" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with join">JOIN</a></strong> TableB<br /> ON TableA.name = TableB.name</p><p>id  name       id   name<br /> &mdash;  ----&nbsp;&mdash;   ----<br /> 1   Pirate     2    Pirate<br /> 3   Ninja      4    Ninja</p></blockquote><p><span id="more-307"></span></p><p><strong>Full outer <a href="http://blog.rpsl.info/tag/join" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with join">join</a></strong> выведет все записи из Таблицы A и Таблицы B,  сопоставив данные из обеих таблиц, если в одной из таблиц данные отсутсвуют, то результатом для данной ячейки будет &laquo;NULL&raquo;</p><blockquote><p><a href="http://blog.rpsl.info/wp-content/uploads/2009/07/join-cartesian.png" class="highslide-image" onclick="return hs.expand(this);"><img class="alignright size-thumbnail wp-image-314" title="join-cartesian" src="http://blog.rpsl.info/wp-content/uploads/2009/07/join-cartesian-150x150.png" alt="join cartesian 150x150 SQL Joins Виды, типы, различия." width="150" height="150" /></a>SELECT * FROM TableA<br /> <strong>FULL OUTER <a href="http://blog.rpsl.info/tag/join" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with join">JOIN</a></strong> TableB<br /> ON TableA.name = TableB.name</p><p>id    name       id    name<br /> &mdash;    ----&nbsp;&mdash;    ----<br /> 1     Pirate     2     Pirate<br /> 2     Monkey <span style="color: gray;">null</span> <span style="color: gray;">null</span><br /> 3     Ninja      4     Ninja<br /> 4     Spaghetti <span style="color: gray;">null</span> <span style="color: gray;">null</span><br /> <span style="color: gray;">null</span> <span style="color: gray;">null</span> 1     Rutabaga<br /> <span style="color: gray;">null</span> <span style="color: gray;">null</span> 3     Darth Vader</p></blockquote><p><strong>Left outer <a href="http://blog.rpsl.info/tag/join" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with join">join</a></strong> выведет данные из Таблицы A, с сопутсвующими данными из Таблицы B. Если подходящих данных в Таблице B нету, то будет выбран &laquo;NULL&raquo;</p><blockquote><p><a href="http://blog.rpsl.info/wp-content/uploads/2009/07/join-left.png" class="highslide-image" onclick="return hs.expand(this);"><img class="alignright size-thumbnail wp-image-316" title="join-left" src="http://blog.rpsl.info/wp-content/uploads/2009/07/join-left-150x150.png" alt="join left 150x150 SQL Joins Виды, типы, различия." width="150" height="150" /></a>SELECT * FROM TableA<br /> <strong>LEFT OUTER <a href="http://blog.rpsl.info/tag/join" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with join">JOIN</a></strong> TableB<br /> ON TableA.name = TableB.name</p><p>id  name       id    name<br /> &mdash;  ----&nbsp;&mdash;    ----<br /> 1   Pirate     2     Pirate<br /> 2   Monkey <span style="color: gray;">null</span> <span style="color: gray;">null</span><br /> 3   Ninja      4     Ninja<br /> 4   Spaghetti <span style="color: gray;">null</span> <span style="color: gray;">null</span></p></blockquote><p>Оперируя прошлым примером, нам не составит труда достать только те данные, которые есть в Таблице A, для этого нужно использовть <strong> left outer <a href="http://blog.rpsl.info/tag/join" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with join">join</a></strong>, с исключением пустых записей из Таблицы B</p><blockquote><p><a href="http://blog.rpsl.info/wp-content/uploads/2009/07/join-left-outer.png" class="highslide-image" onclick="return hs.expand(this);"><img class="alignright size-thumbnail wp-image-318" title="join-left-outer" src="http://blog.rpsl.info/wp-content/uploads/2009/07/join-left-outer-150x150.png" alt="join left outer 150x150 SQL Joins Виды, типы, различия." width="150" height="150" /></a>SELECT * FROM TableA<br /> LEFT OUTER <a href="http://blog.rpsl.info/tag/join" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with join">JOIN</a> TableB<br /> ON TableA.name = TableB.name<br /> <strong>WHERE TableB.id IS null</strong></p><p>id  name       id     name<br /> &mdash;  ----&nbsp;&mdash;     ----<br /> 2   Monkey <span style="color: gray;">null</span> <span style="color: gray;">null</span><br /> 4   Spaghetti <span style="color: gray;">null</span> <span style="color: gray;">null</span></p></blockquote><p>А если, чуть чуть усложнить задачу, то мы лего достанем данные, которые не имеют ничего общего. Для этого нужно использовать <strong>full outer <a href="http://blog.rpsl.info/tag/join" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with join">join</a></strong>.</p><blockquote><p><a href="http://blog.rpsl.info/wp-content/uploads/2009/07/join-outer.png" class="highslide-image" onclick="return hs.expand(this);"><img class="alignright size-thumbnail wp-image-320" title="join-outer" src="http://blog.rpsl.info/wp-content/uploads/2009/07/join-outer-150x150.png" alt="join outer 150x150 SQL Joins Виды, типы, различия." width="150" height="150" /></a>SELECT * FROM TableA<br /> FULL OUTER <a href="http://blog.rpsl.info/tag/join" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with join">JOIN</a> TableB<br /> ON TableA.name = TableB.name<br /> <strong>WHERE TableA.id IS null<br /> OR TableB.id IS null<br /> </strong><br /> id    name       id    name<br /> &mdash;    ----&nbsp;&mdash;    ----<br /> 2     Monkey <span style="color: gray;">null</span> <span style="color: gray;">null</span><br /> 4     Spaghetti <span style="color: gray;">null</span> <span style="color: gray;">null</span><br /> <span style="color: gray;">null</span> <span style="color: gray;">null</span> 1     Rutabaga<br /> <span style="color: gray;">null</span> <span style="color: gray;">null</span> 3     Darth Vader</p></blockquote><p>Вот собственно и всё. Всё просто.</p><p>P.s. Данная статья является вольным переводом некой статьи, авторство которой мне не известно.</p>Тэги: <a href="http://blog.rpsl.info/tag/join" title="join" rel="tag nofollow">join</a>, <a href="http://blog.rpsl.info/tag/mysql" title="mysql" rel="tag nofollow">mysql</a>, <a href="http://blog.rpsl.info/tag/sql" title="sql" rel="tag nofollow">sql</a><br /><h4>Похожие записи</h4><ul class="st-related-posts"><li><a href="http://blog.rpsl.info/2010/07/kehshirovanie-mysql-mysimplecache.html" title="Кэширование MySQL&nbsp;&mdash; MySimpleCache (6 Июль  2010)">Кэширование MySQL&nbsp;&mdash; MySimpleCache</a> (0)</li><li><a href="http://blog.rpsl.info/2010/06/php-keshirovanie-mysql.html" title="PHP Кеширование Mysql (27 Июнь  2010)">PHP Кеширование Mysql</a> (1)</li></ul>]]></content:encoded> <wfw:commentRss>http://blog.rpsl.info/2009/07/sql-joins-vidy-tipy-razlichiya.html/feed</wfw:commentRss> <slash:comments>2</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using memcached
Page Caching using memcached (user agent is rejected)
Database Caching 12/25 queries in 0.039 seconds using memcached

Served from: blog.rpsl.info @ 2010-09-10 08:34:19 -->