<?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>Twoixted again &#187; SQL</title>
	<atom:link href="http://www.perezruiz.com/category/programacion/sql/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.perezruiz.com</link>
	<description>Let's get twoixted again...</description>
	<lastBuildDate>Sun, 05 Sep 2010 00:17:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Los dientes del lobo</title>
		<link>http://www.perezruiz.com/2010/08/15/los-dientes-del-lobo/</link>
		<comments>http://www.perezruiz.com/2010/08/15/los-dientes-del-lobo/#comments</comments>
		<pubDate>Sat, 14 Aug 2010 23:10:56 +0000</pubDate>
		<dc:creator>Twoixter</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://www.perezruiz.com/?p=212</guid>
		<description><![CDATA[Oracle demanda a Google por violación de patentes Java en Android. Sólo con esto ya es suficiente para dejar en evidencia a Oracle con respecto a proyectos Open Source. La comunidad Java debe estar que trina. No quiero ni pensar las repercusiones que tendrá esto, bien si sale adelante la demanda o si Oracle no [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://arstechnica.com/tech-policy/news/2010/08/oracle-sues-google-over-use-of-java-in-android-sdk.ars">Oracle demanda a Google</a> por violación de patentes Java en Android. Sólo con esto ya es suficiente para dejar en evidencia a Oracle con respecto a proyectos Open Source. La comunidad Java debe estar que trina. No quiero ni pensar las repercusiones que tendrá esto, bien si sale adelante la demanda o si Oracle no consigue sacarle pasta a Google.</p>

<p>A ver si Oracle consigue matar a Java ya de una vez. <img src='http://www.perezruiz.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' />  ¿Será MySQL el siguiente?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.perezruiz.com/2010/08/15/los-dientes-del-lobo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Diferencias en uniones INNER JOIN en MySQL</title>
		<link>http://www.perezruiz.com/2008/10/23/diferencias-en-uniones-inner-join-en-mysql/</link>
		<comments>http://www.perezruiz.com/2008/10/23/diferencias-en-uniones-inner-join-en-mysql/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 21:07:57 +0000</pubDate>
		<dc:creator>Twoixter</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[prog]]></category>

		<guid isPermaLink="false">http://www.perezruiz.com/?p=65</guid>
		<description><![CDATA[Cuidado con utilizar y mezclar las cláusulas INNER JOIN / LEFT JOIN en MySQL con una lista de tablas en el FROM. Por ejemplo, un tipico SELECT: 1 2 3 4 SELECT * FROM tabla1 t1, tabla2 t2 LEFT JOIN tabla3 t3 ON t3.id = t1.id WHERE t1.id = t2.id Funcionaba bien hasta la versión [...]]]></description>
			<content:encoded><![CDATA[<p>Cuidado con utilizar y mezclar las cláusulas INNER JOIN / LEFT JOIN en MySQL con una lista de tablas en el FROM. Por ejemplo, un tipico SELECT:</p>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span>
    <span style="color: #993333; font-weight: bold;">FROM</span> tabla1 t1<span style="color: #66cc66;">,</span> tabla2 t2
    <span style="color: #993333; font-weight: bold;">LEFT</span> <span style="color: #993333; font-weight: bold;">JOIN</span> tabla3 t3 <span style="color: #993333; font-weight: bold;">ON</span> t3<span style="color: #66cc66;">.</span>id <span style="color: #66cc66;">=</span> t1<span style="color: #66cc66;">.</span>id
    <span style="color: #993333; font-weight: bold;">WHERE</span> t1<span style="color: #66cc66;">.</span>id <span style="color: #66cc66;">=</span> t2<span style="color: #66cc66;">.</span>id</pre></td></tr></table></div>


<p>Funcionaba bien hasta la versión 5.0.12 de MySQL. A partir de la versión 5.0.12, ha cambiado la precedencia de los operadores &#8220;coma&#8221; (,) y JOIN, de tal forma que se produce un error &#8220;Unknown column &#8216;t1.id&#8217; in &#8216;on clause&#8217;&#8221;. Esto rompe de manera definitiva algunos programas, osCommerce por ejemplo.</p>

<p>La solución es poner paréntesis para forzar la precedencia de los operadores &#8220;coma&#8221; y JOIN, o también cambiar la coma por un INNER JOIN, de tal forma que el anterior query quedaría de la siguiente forma:</p>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span>
    <span style="color: #993333; font-weight: bold;">FROM</span> tabla1 t1
    <span style="color: #993333; font-weight: bold;">INNER</span> <span style="color: #993333; font-weight: bold;">JOIN</span> tabla2 t2 <span style="color: #993333; font-weight: bold;">ON</span> t2<span style="color: #66cc66;">.</span>id <span style="color: #66cc66;">=</span> t1<span style="color: #66cc66;">.</span>id
    <span style="color: #993333; font-weight: bold;">LEFT</span> <span style="color: #993333; font-weight: bold;">JOIN</span> tabla3 t3 <span style="color: #993333; font-weight: bold;">ON</span> t3<span style="color: #66cc66;">.</span>id <span style="color: #66cc66;">=</span> t1<span style="color: #66cc66;">.</span>id</pre></td></tr></table></div>


<p>O también:</p>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span>
    <span style="color: #993333; font-weight: bold;">FROM</span> <span style="color: #66cc66;">&#40;</span>tabla1 t1<span style="color: #66cc66;">,</span> tabla2 t2<span style="color: #66cc66;">&#41;</span>
    <span style="color: #993333; font-weight: bold;">LEFT</span> <span style="color: #993333; font-weight: bold;">JOIN</span> tabla3 t3 <span style="color: #993333; font-weight: bold;">ON</span> t3<span style="color: #66cc66;">.</span>id <span style="color: #66cc66;">=</span> t1<span style="color: #66cc66;">.</span>id
    <span style="color: #993333; font-weight: bold;">WHERE</span> t1<span style="color: #66cc66;">.</span>id <span style="color: #66cc66;">=</span> t2<span style="color: #66cc66;">.</span>id</pre></td></tr></table></div>


<p>Personalmente prefiero la primera, considero que es mucho más correcto ya que todas las uniones de las tablas se hacen directamente en cláusulas ON dejando el WHERE libre para las restricciones de los datos, no las uniones.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.perezruiz.com/2008/10/23/diferencias-en-uniones-inner-join-en-mysql/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
