<?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>ManCanDo - PhP, MySQL, DIY, porady i triki &#187; &#187; JOIN</title>
	<atom:link href="http://www.mancando.pl/tag/join/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mancando.pl</link>
	<description>Co kupować a czego nie? Ciekawostki z zakresu programowania w PHP. Sztuczki i kruczki MySQL. Zagadnienia z zakresu grafiki komputerowej. Opisy ciekawych rzeczy, które można wykonać samodzielnie.</description>
	<lastBuildDate>Thu, 05 Dec 2013 18:50:19 +0000</lastBuildDate>
	<language>pl-PL</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.0.38</generator>
	<item>
		<title>Odrobinę lewy LEFT JOIN z NULL</title>
		<link>http://www.mancando.pl/odrobine-lewy-left-join-z-null/</link>
		<comments>http://www.mancando.pl/odrobine-lewy-left-join-z-null/#comments</comments>
		<pubDate>Mon, 29 Apr 2013 08:47:51 +0000</pubDate>
		<dc:creator><![CDATA[Piotrek]]></dc:creator>
				<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[JOIN]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[null]]></category>

		<guid isPermaLink="false">http://mancando.pl/?p=133</guid>
		<description><![CDATA[Dziś zauważyłem kolejną ciekawą właściwość MySQL, którą warto odnotować. W przypadku wykonywania złożonych zapytań na &#8222;nierównych&#8221; tabelach z zastosowaniem złączenia typu LEFT (lub RIGHT) JOIN w wynikach możemy uzyskać rekordy w których część pól jest równa NULL. Jest to oczywista &#8230; <a href="http://www.mancando.pl/odrobine-lewy-left-join-z-null/">Czytaj dalej <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[
<!-- Easy Plugin for AdSense V7.51 -->
<!-- [leadin: 2 urCount: 2 urMax: 0] -->
<div class="ezAdsense adsense adsense-leadin" style="text-align:center;margin:20px 0px;"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- mancando-poziomy -->
<ins class="adsbygoogle"
     style="display:inline-block;width:728px;height:90px"
     data-ad-client="ca-pub-2234288553315702"
     data-ad-slot="2233930472"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
<!-- Easy Plugin for AdSense V7.51 -->
<p><img class="size-full wp-image-51 alignright" style="border: 0px none;" alt="komputerek_mysql" src="http://mancando.pl/wp-content/uploads/2013/01/komputerek_mysql.png" width="70" height="68" />Dziś zauważyłem kolejną ciekawą właściwość <strong>MySQL</strong>, którą warto odnotować. W przypadku wykonywania złożonych zapytań na &#8222;nierównych&#8221; tabelach z zastosowaniem złączenia typu <strong>LEFT</strong> (lub <strong>RIGHT</strong>) <strong>JOIN</strong> w wynikach możemy uzyskać rekordy w których część pól jest równa <strong>NULL</strong>. Jest to oczywista konsekwencja niepełnych danych w jednaj (lub obu) tabelach. Nie zawsze jest to normalny i pożądany stan bazy danych, ale ten temat pomińmy. <span id="more-133"></span></p>
<p>Poniżej znajdziecie najprostszą postać zapytanie z LEFT JOIN:</p>
<p><code>SELECT * FROM t1 LEFT JOIN t2 ON (column1)</code></p>
<p>Wynik tego zapytania zwrócony przez bazę danych to lista rekordów z pełnymi danymi oraz takimi w których część pól jest równa NULL. Lista obejmuje więc rekordy występujące w obu tabelach oraz w tabeli t1. Właściwością MySQL którą chciałem opisać jest to, że w przypadku takich zapytań <strong>dodanie warunku WHERE na kolumnie, która zawiera wartości NULL spowoduje usunięcie również tych rekordów w których dane pole jest równe NULL</strong>.</p>
<p><code>SELECT * FROM t1 LEFT JOIN t2 ON (column1) WHERE t2.column2 NOT LIKE 'clause';</code></p>
<p>Wykonanie powyższego zapytania uszczupli zwrócone wyniki nie tylko o te spełniające warunek WHERE, ale również usunie wszystkie rekordy w których przypadku wartość t2.column2 jest NULL. Taki sposób działania bazy danych nieco mnie zaskoczył. Osobiście oczekiwałem, że w wyniku działania warunku WHERE otrzymam listę zawierającą również te rekordy które występowały jednostronnie.</p>
<p>Jedynym sensownym rozwiązaniem w takim przypadku jest dodanie dodatkowego warunku zdefiniowanego w następujący sposób:</p>
<p><code>SELECT * FROM t1 LEFT JOIN t2 ON (column1) WHERE t2.column2 NOT LIKE 'clause' OR t2.column2 IS NULL';</code></p>
<p>Kolejny raz potwierdza się to, że baza <strong>MySQL traktuje NULL dosyć wyjątkowo</strong>, więc lepiej uważać jeśli jesteście zmuszeni programować zapytania na tabelach (lub wynikach zapytań), które będą zwracać rekordy zawierające takie wartości.</p>

<!-- Easy Plugin for AdSense V7.51 -->
<!-- [leadout: 3 urCount: 3 urMax: 0] -->
<div class="ezAdsense adsense adsense-leadout" style="text-align:center;margin:12px;"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- mancando-poziomy -->
<ins class="adsbygoogle"
     style="display:inline-block;width:728px;height:90px"
     data-ad-client="ca-pub-2234288553315702"
     data-ad-slot="2233930472"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
<!-- Easy Plugin for AdSense V7.51 -->
]]></content:encoded>
			<wfw:commentRss>http://www.mancando.pl/odrobine-lewy-left-join-z-null/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
