<?xml version="1.0" encoding="iso-8859-1"?><!-- generator="b2evolution/2.4.6" -->
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Mysql Blog en Espa&#241;ol</title>
		<link>http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php</link>
		<description></description>
		<language>es-ES</language>
		<docs>http://blogs.law.harvard.edu/tech/rss</docs>
		<admin:generatorAgent rdf:resource="http://b2evolution.net/?v=2.4.6"/>
		<ttl>60</ttl>
				<item>
			<title>Calcular el promedio o modo en Mysql</title>
			<link>http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2010/09/28/calcular-el-promedio-o-modo-en-mysql</link>
			<pubDate>Tue, 28 Sep 2010 14:24:51 +0000</pubDate>			<dc:creator>admin</dc:creator>
			<category domain="main">Aprendiz</category>
<category domain="alt">Trucos avanzado</category>			<guid isPermaLink="false">73@http://www.oxfordtechnotes.co.uk/sqlblog/</guid>
						<description>&lt;p&gt;Para calcular la media (o promedio) podemos utilizar la funci&amp;#243;n AVG en Mysql.&lt;/p&gt;

&lt;p class=&quot;amcode&quot;&gt;Code:&lt;/p&gt;&lt;div class=&quot;codeblock amc_code amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;select avg(sal) as prom_sal&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;from emp;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;prom_sal&lt;br /&gt;
========&lt;br /&gt;
2073.9286&lt;/p&gt;

&lt;p&gt;Recorda sin embargo que la funci&amp;#243;n no funciona en un campo NULL. Si deseas incluir valores NULL (por ejemplo, asuma un valor cero) &lt;br /&gt;
el uso &lt;strong&gt;COALESCE&lt;/strong&gt; cambia por defecto el valor NULL a cero.&lt;/p&gt;

&lt;p&gt;select avg(coalesce(sal,0)) as mean_sal&lt;br /&gt;
from emp;&lt;/p&gt;

&lt;p&gt;Ahora podemos producir la cifra media por columna agrupadas, por ejemplo, por departamento&lt;/p&gt;

&lt;p class=&quot;amcode&quot;&gt;Code:&lt;/p&gt;&lt;div class=&quot;codeblock amc_code amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;select deptno, avg(coalesce(sal,0)) as mean_sal&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;from emp&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;group by deptno;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;deptno 	mean_sal&lt;br /&gt;
======  ========&lt;br /&gt;
10 	2916.6667&lt;br /&gt;
20 	2175.0000&lt;br /&gt;
30 	1568.3333&lt;/p&gt;


&lt;p&gt;El modo es el valor que se produce con mayor frecuencia en un determinado conjunto de datos.&lt;br /&gt;
Si quiero saber de la tabla Productos, lo que es el modo del campo FULLPRICE de un grupo de productos determinados (en este caso 'CA'), puedo usar una subconsulta para encontrar el modo.&lt;br /&gt;
La subconsulta calcula la cuenta diferentes para cada Fullprice, mientras que la parte principal de la consulta se elige el precio que se produce m&amp;#225;s.&lt;/p&gt;

&lt;p class=&quot;amcode&quot;&gt;Code:&lt;/p&gt;&lt;div class=&quot;codeblock amc_code amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;SELECT FullPrice FROM product &lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;WHERE productgroupcode = 'CA'&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;GROUP BY FullPrice&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;HAVING count(*) &amp;gt;= all (SELECT count(*)&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc5&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;FROM product&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc6&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;WHERE productgroupcode = 'CA'&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc7&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;GROUP BY FullPrice)&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;


&lt;p&gt;FullPrice&lt;br /&gt;
=========&lt;br /&gt;
14&lt;/p&gt;

&lt;p&gt;Hay otro requisito com&amp;#250;n en la b&amp;#250;squeda de un promedio, que se llama la mediana.&lt;br /&gt;
La mediana es el valor del punto medio de un conjunto de elementos ordenados.&lt;br /&gt;
Para calcular la mediana se puede utilizar un &quot;SELF-JOIN&quot; o producto cartesiano de una tabla consigo misma (combinaci&amp;#243;n de la tabla a s&amp;#237; mismo), y luego usar la cl&amp;#225;usula HAVING para filtrar las filas donde el n&amp;#250;mero de&lt;br /&gt;
veces (p. FULLPRICE = P. FULLPRICE) es mayor o igual al n&amp;#250;mero de veces (P. FULLPRICE&gt; P. FULLPRICE):&lt;/p&gt;

&lt;p class=&quot;amcode&quot;&gt;Code:&lt;/p&gt;&lt;div class=&quot;codeblock amc_code amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;SELECT avg(FullPrice)&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;FROM ( select q.FullPrice&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;FROM product q, product p &lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;WHERE p.productgroupcode = q.productgroupcode &lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc5&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;AND q.productgroupcode = 'CA'&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc6&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;GROUP BY q.FullPrice&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc7&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;HAVING sum(case when q.FullPrice = p.FullPrice then 1 else 0 end)&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc8&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;gt;= abs(sum(sign(q.FullPrice - p.FullPrice)))&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc9&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;) t&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;avg(FullPrice)&lt;br /&gt;
=========&lt;br /&gt;
14.0000&lt;/p&gt;

&lt;p&gt;Podemos mostrar el resultado de las tareas individuales con el c&amp;#243;digo que se mueve el c&amp;#225;lculo SUMA en la sentencia SELECT:&lt;/p&gt;
&lt;p class=&quot;amcode&quot;&gt;Code:&lt;/p&gt;&lt;div class=&quot;codeblock amc_code amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;select q.FullPrice, p.FullPrice, &lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; sum(case when q.FullPrice = p.FullPrice then 1 else 0 end) as cnt1,&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; abs(sum(sign(q.FullPrice - p.FullPrice))) as cnt2&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;FROM product q, product p &lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc5&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;WHERE p.productgroupcode = q.productgroupcode &lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc6&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;AND q.productgroupcode = 'CA'&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc7&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;group by q.FullPrice&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;&lt;p&gt;FullPrice		cnt1		cnt2&lt;br /&gt;
10	  ---	25	  ---	130&lt;br /&gt;
11	  ---	4	  ---	38&lt;br /&gt;
12	  ---	1	  ---	16&lt;br /&gt;
14	  ---	64	  ---	56&lt;br /&gt;
15	  ---	1	  ---	2&lt;br /&gt;
20	  ---	1	  ---	4&lt;br /&gt;
24	  ---	9	  ---	24&lt;br /&gt;
26	  ---	1	  ---	12&lt;br /&gt;
29	  ---	9	  ---	48&lt;br /&gt;
39	  ---	25	  ---	120&lt;br /&gt;
630	  ---	1	  ---	30&lt;/p&gt;&lt;/blockquote&gt;



&lt;p&gt;Por &amp;#250;ltimo, aqu&amp;#237; voy a enumerar los registros para que pueda ver todo el conjunto con el que trabajamos.&lt;/p&gt;

&lt;p class=&quot;amcode&quot;&gt;Code:&lt;/p&gt;&lt;div class=&quot;codeblock amc_code amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;SELECT PRODUCTID, FULLPRICE&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;FROM product&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;WHERE PRODUCTGROUPCODE = 'CA'&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;ORDER BY FULLPRICE&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;&lt;p&gt;PRODUCTID	---	FULLPRICE&lt;br /&gt;
12175	----	10&lt;br /&gt;
12014	----	10&lt;br /&gt;
13297	----	10&lt;br /&gt;
10002	----	10&lt;br /&gt;
10003	----	10&lt;br /&gt;
10838	----	11&lt;br /&gt;
13109	----	11&lt;br /&gt;
13107	----	12&lt;br /&gt;
13299	----	14&lt;br /&gt;
12177	----	14&lt;br /&gt;
14030	----	14&lt;br /&gt;
13621	----	14&lt;br /&gt;
12016	----	14&lt;br /&gt;
11003	----	14&lt;br /&gt;
11057	----	14&lt;br /&gt;
11056	----	14&lt;br /&gt;
10001	----	15&lt;br /&gt;
12949	----	20&lt;br /&gt;
13360	----	24&lt;br /&gt;
13470	----	24&lt;br /&gt;
10955	----	24&lt;br /&gt;
13359	----	26&lt;br /&gt;
13298	----	29&lt;br /&gt;
12015	----	29&lt;br /&gt;
12176	----	29&lt;br /&gt;
13024	----	39&lt;br /&gt;
10863	----	39&lt;br /&gt;
13023	----	39&lt;br /&gt;
10862	----	39&lt;br /&gt;
10993	----	39&lt;br /&gt;
12141	----	630&lt;/p&gt;&lt;/blockquote&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2010/09/28/calcular-el-promedio-o-modo-en-mysql&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>Para calcular la media (o promedio) podemos utilizar la funci&#243;n AVG en Mysql.</p>

<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">select avg(sal) as prom_sal</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc2"></div></td><td><code><span class="amc_default">from emp;</span></code></td></tr>
</table></div>

<p>prom_sal<br />
========<br />
2073.9286</p>

<p>Recorda sin embargo que la funci&#243;n no funciona en un campo NULL. Si deseas incluir valores NULL (por ejemplo, asuma un valor cero) <br />
el uso <strong>COALESCE</strong> cambia por defecto el valor NULL a cero.</p>

<p>select avg(coalesce(sal,0)) as mean_sal<br />
from emp;</p>

<p>Ahora podemos producir la cifra media por columna agrupadas, por ejemplo, por departamento</p>

<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">select deptno, avg(coalesce(sal,0)) as mean_sal</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc2"></div></td><td><code><span class="amc_default">from emp</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc3"></div></td><td><code><span class="amc_default">group by deptno;</span></code></td></tr>
</table></div>

<p>deptno 	mean_sal<br />
======  ========<br />
10 	2916.6667<br />
20 	2175.0000<br />
30 	1568.3333</p>


<p>El modo es el valor que se produce con mayor frecuencia en un determinado conjunto de datos.<br />
Si quiero saber de la tabla Productos, lo que es el modo del campo FULLPRICE de un grupo de productos determinados (en este caso 'CA'), puedo usar una subconsulta para encontrar el modo.<br />
La subconsulta calcula la cuenta diferentes para cada Fullprice, mientras que la parte principal de la consulta se elige el precio que se produce m&#225;s.</p>

<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">SELECT FullPrice FROM product </span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc2"></div></td><td><code><span class="amc_default">WHERE productgroupcode = 'CA'</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc3"></div></td><td><code><span class="amc_default">GROUP BY FullPrice</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc4"></div></td><td><code><span class="amc_default">HAVING count(*) &gt;= all (SELECT count(*)</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc5"></div></td><td><code><span class="amc_default">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;FROM product</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc6"></div></td><td><code><span class="amc_default">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;WHERE productgroupcode = 'CA'</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc7"></div></td><td><code><span class="amc_default">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;GROUP BY FullPrice)</span></code></td></tr>
</table></div>


<p>FullPrice<br />
=========<br />
14</p>

<p>Hay otro requisito com&#250;n en la b&#250;squeda de un promedio, que se llama la mediana.<br />
La mediana es el valor del punto medio de un conjunto de elementos ordenados.<br />
Para calcular la mediana se puede utilizar un "SELF-JOIN" o producto cartesiano de una tabla consigo misma (combinaci&#243;n de la tabla a s&#237; mismo), y luego usar la cl&#225;usula HAVING para filtrar las filas donde el n&#250;mero de<br />
veces (p. FULLPRICE = P. FULLPRICE) es mayor o igual al n&#250;mero de veces (P. FULLPRICE> P. FULLPRICE):</p>

<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">SELECT avg(FullPrice)</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc2"></div></td><td><code><span class="amc_default">FROM ( select q.FullPrice</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc3"></div></td><td><code><span class="amc_default">&#160;&#160;&#160;&#160;&#160;&#160;FROM product q, product p </span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc4"></div></td><td><code><span class="amc_default">&#160;&#160;&#160;&#160;&#160;&#160;WHERE p.productgroupcode = q.productgroupcode </span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc5"></div></td><td><code><span class="amc_default">&#160;&#160;&#160;&#160;&#160;&#160;AND q.productgroupcode = 'CA'</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc6"></div></td><td><code><span class="amc_default">&#160;&#160;&#160;&#160;&#160;&#160;GROUP BY q.FullPrice</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc7"></div></td><td><code><span class="amc_default">&#160;&#160;&#160;&#160;&#160;&#160;HAVING sum(case when q.FullPrice = p.FullPrice then 1 else 0 end)</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc8"></div></td><td><code><span class="amc_default">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &gt;= abs(sum(sign(q.FullPrice - p.FullPrice)))</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc9"></div></td><td><code><span class="amc_default">&#160;&#160;&#160;&#160;&#160;&#160;) t</span></code></td></tr>
</table></div>

<p>avg(FullPrice)<br />
=========<br />
14.0000</p>

<p>Podemos mostrar el resultado de las tareas individuales con el c&#243;digo que se mueve el c&#225;lculo SUMA en la sentencia SELECT:</p>
<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">select q.FullPrice, p.FullPrice, </span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc2"></div></td><td><code><span class="amc_default">&#160;&#160;&#160;&#160;&#160;&#160; sum(case when q.FullPrice = p.FullPrice then 1 else 0 end) as cnt1,</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc3"></div></td><td><code><span class="amc_default">&#160;&#160;&#160;&#160;&#160;&#160; abs(sum(sign(q.FullPrice - p.FullPrice))) as cnt2</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc4"></div></td><td><code><span class="amc_default">&#160;&#160;&#160;&#160;&#160;&#160;FROM product q, product p </span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc5"></div></td><td><code><span class="amc_default">&#160;&#160;&#160;&#160;&#160;&#160;WHERE p.productgroupcode = q.productgroupcode </span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc6"></div></td><td><code><span class="amc_default">&#160;&#160;&#160;&#160;&#160;&#160;AND q.productgroupcode = 'CA'</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc7"></div></td><td><code><span class="amc_default">group by q.FullPrice</span></code></td></tr>
</table></div>

<blockquote><p>FullPrice		cnt1		cnt2<br />
10	  ---	25	  ---	130<br />
11	  ---	4	  ---	38<br />
12	  ---	1	  ---	16<br />
14	  ---	64	  ---	56<br />
15	  ---	1	  ---	2<br />
20	  ---	1	  ---	4<br />
24	  ---	9	  ---	24<br />
26	  ---	1	  ---	12<br />
29	  ---	9	  ---	48<br />
39	  ---	25	  ---	120<br />
630	  ---	1	  ---	30</p></blockquote>



<p>Por &#250;ltimo, aqu&#237; voy a enumerar los registros para que pueda ver todo el conjunto con el que trabajamos.</p>

<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">SELECT PRODUCTID, FULLPRICE</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc2"></div></td><td><code><span class="amc_default">FROM product</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc3"></div></td><td><code><span class="amc_default">WHERE PRODUCTGROUPCODE = 'CA'</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc4"></div></td><td><code><span class="amc_default">ORDER BY FULLPRICE</span></code></td></tr>
</table></div>

<blockquote><p>PRODUCTID	---	FULLPRICE<br />
12175	----	10<br />
12014	----	10<br />
13297	----	10<br />
10002	----	10<br />
10003	----	10<br />
10838	----	11<br />
13109	----	11<br />
13107	----	12<br />
13299	----	14<br />
12177	----	14<br />
14030	----	14<br />
13621	----	14<br />
12016	----	14<br />
11003	----	14<br />
11057	----	14<br />
11056	----	14<br />
10001	----	15<br />
12949	----	20<br />
13360	----	24<br />
13470	----	24<br />
10955	----	24<br />
13359	----	26<br />
13298	----	29<br />
12015	----	29<br />
12176	----	29<br />
13024	----	39<br />
10863	----	39<br />
13023	----	39<br />
10862	----	39<br />
10993	----	39<br />
12141	----	630</p></blockquote><div class="item_footer"><p><small><a href="http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2010/09/28/calcular-el-promedio-o-modo-en-mysql">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2010/09/28/calcular-el-promedio-o-modo-en-mysql#comments</comments>
		</item>
				<item>
			<title>enlaces</title>
			<link>http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2010/02/16/enlaces</link>
			<pubDate>Tue, 16 Feb 2010 18:40:52 +0000</pubDate>			<dc:creator>admin</dc:creator>
			<category domain="alt">Aprendiz</category>
<category domain="main">Trucos avanzado</category>			<guid isPermaLink="false">71@http://www.oxfordtechnotes.co.uk/sqlblog/</guid>
						<description>&lt;p&gt;S&amp;#243;lo quer&amp;#237;a entrar en un par de cosas que son de inter&amp;#233;s para aquellos que utilizan o programan de Mysql. En primer lugar, si uses Twitter la mejor manera de buscar art&amp;#237;culos relacionados con MySQL es entrar #mysql en el campo de b&amp;#250;squeda.&lt;br /&gt;
En segundo lugar, este parece ser un enlace ideal para explorar m&amp;#225;s comandos en Mysql:&lt;br /&gt;
&lt;a href=&quot;http://www.webadictos.com.mx/2007/06/17/sentencias-en-mysql-que-tal-ves-no-conocias/&quot;&gt;sentencias-en-mysql-que-tal-ves-no-conocias&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2010/02/16/enlaces&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>S&#243;lo quer&#237;a entrar en un par de cosas que son de inter&#233;s para aquellos que utilizan o programan de Mysql. En primer lugar, si uses Twitter la mejor manera de buscar art&#237;culos relacionados con MySQL es entrar #mysql en el campo de b&#250;squeda.<br />
En segundo lugar, este parece ser un enlace ideal para explorar m&#225;s comandos en Mysql:<br />
<a href="http://www.webadictos.com.mx/2007/06/17/sentencias-en-mysql-que-tal-ves-no-conocias/">sentencias-en-mysql-que-tal-ves-no-conocias</a></p><div class="item_footer"><p><small><a href="http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2010/02/16/enlaces">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2010/02/16/enlaces#comments</comments>
		</item>
				<item>
			<title>Proyecto Euler 2 en Mysql</title>
			<link>http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2009/09/05/proyecto-euler-2-en-mysql</link>
			<pubDate>Sat, 05 Sep 2009 17:18:07 +0000</pubDate>			<dc:creator>admin</dc:creator>
			<category domain="main">Trucos avanzado</category>			<guid isPermaLink="false">66@http://www.oxfordtechnotes.co.uk/sqlblog/</guid>
						<description>&lt;p&gt;Aqu&amp;#237; est&amp;#225; la pregunta 2 del Proyecto de Euler &lt;a href=&quot;http://projecteuler.net/&quot;&gt;The Euler Project &lt;/a&gt;:&lt;br /&gt;
&lt;strong&gt;Cada nuevo n&amp;#250;mero de la secuencia de Fibonaci se genera sumando los dos n&amp;#250;meros que lo preceden.&lt;br /&gt;
Empezando por el 1 y el 2, los diez primeros n&amp;#250;meros ser&amp;#225;n:1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...&lt;br /&gt;
&lt;br /&gt;
Hallar la suma de todos n&amp;#250;meros pares de la secuencia de Fibonaci que no exceda de cuatro mill&amp;#243;nes.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;	&lt;br /&gt;
Pues, en cuanto a una soluci&amp;#243;n de Perl, tenemos el siguiente c&amp;#243;digo&lt;/p&gt;

&lt;p class=&quot;amcode&quot;&gt;Code:&lt;/p&gt;&lt;div class=&quot;codeblock amc_code amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;#!/usr/bin/perl&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;@f=(1,2);&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;$sum=2;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc5&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;while(($f=$f[0]+$f[1]) &amp;lt;= 4_000_000) {&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc6&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; shift @f; push @f,$f;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc7&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;$sum+=$f if $f%2==0 }&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc8&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;print $sum, &quot;\n&quot;;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc9&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;# Answer = 4613732&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Vemos que el programa Perl se suma a $sum donde la variable $f es un n&amp;#250;mero par, y los lazos hasta que el valor cambiado en la memoria (que se a&amp;#241;ade a cada valor anterior para producir la serie de Fibonacci) es superior a 4.000.000.&lt;/p&gt;

&lt;p&gt;	&lt;br /&gt;
&amp;#191;C&amp;#243;mo podemos lograr esto en MySQL? Una vez m&amp;#225;s (como en la primera entrada) vamos a utilizar variables para iterar. Con el fin de obtener la secuencia de Fibonacci se puede utilizar este...&lt;/p&gt;

&lt;p class=&quot;amcode&quot;&gt;Code:&lt;/p&gt;&lt;div class=&quot;codeblock amc_code amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;set @varsum=1;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;set @varadd=1;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;set @var1=1;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;set @var2=1;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc5&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc6&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;select @varsum:=@varadd+@varsum as fibonacci,&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc7&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @varadd:=@var2,&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc8&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @var2:=@varsum, orderid &lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc9&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;from orders limit 40;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;	&lt;br /&gt;
(orders es una tabla que yo uso que tiene miles de filas).&lt;br /&gt;
Puse 40 en la cl&amp;#225;usula de LIMIT despu&amp;#233;s de un poco de ensayo y error. Recuerdes restaurar las variables cada vez que se ejecuta una consulta como esta.	&lt;br /&gt;
A continuaci&amp;#243;n, puede hacer una suma de los valores devueltos cuando el valor de Fibonacci es menos de 4 millones de d&amp;#243;lares, mediante un INNER SELECT:&lt;/p&gt;

&lt;p class=&quot;amcode&quot;&gt;Code:&lt;/p&gt;&lt;div class=&quot;codeblock amc_code amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;set @varsum=1;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;set @varadd=1;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;set @var1=1;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;set @var2=1;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc5&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc6&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;select sum(fibonacci) from (select @varsum:=@varadd+@varsum as fibonacci,@varadd:=@var2,@var2:=@varsum, orderid from orders limit 40) tmp where fibonacci &amp;lt; 4000000;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Pero estamos sumando todos los n&amp;#250;meros haciendo esto - el problema dice que s&amp;#243;lo debe sumar los n&amp;#250;meros pares de la secuencia. Modificar f&amp;#225;cilmente (v&amp;#233;te la soluci&amp;#243;n para el n&amp;#250;mero 1) utilizando la funci&amp;#243;n MOD:&lt;/p&gt;

&lt;p class=&quot;amcode&quot;&gt;Code:&lt;/p&gt;&lt;div class=&quot;codeblock amc_code amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;set @varsum=1;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;set @varadd=1;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;set @var1=1;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;set @var2=1;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc5&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc6&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;select sum(fibonacci) from &lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc7&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;(select @varsum:=@varadd+@varsum as fibonacci,&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc8&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;@varadd:=@var2, @var2:=@varsum &lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc9&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;from orders limit 40) tmp &lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc0&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;where fibonacci &amp;lt; 4000000 &lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;and mod(fibonacci,2)=0;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;+----------------+&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;| sum(fibonacci) |&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc5&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;+----------------+&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc6&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;|&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;4613732 | &lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc7&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;+----------------+&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc8&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;1 row in set (0.27 sec)&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;	&lt;br /&gt;
Espero que este c&amp;#243;digo es de utilidad para alguien.&lt;br /&gt;
Saludos, Mark&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2009/09/05/proyecto-euler-2-en-mysql&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>Aqu&#237; est&#225; la pregunta 2 del Proyecto de Euler <a href="http://projecteuler.net/">The Euler Project </a>:<br />
<strong>Cada nuevo n&#250;mero de la secuencia de Fibonaci se genera sumando los dos n&#250;meros que lo preceden.<br />
Empezando por el 1 y el 2, los diez primeros n&#250;meros ser&#225;n:1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...<br />
<br />
Hallar la suma de todos n&#250;meros pares de la secuencia de Fibonaci que no exceda de cuatro mill&#243;nes.</strong></p>

<p>	<br />
Pues, en cuanto a una soluci&#243;n de Perl, tenemos el siguiente c&#243;digo</p>

<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">#!/usr/bin/perl</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc2"></div></td><td><code>&nbsp;</code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc3"></div></td><td><code><span class="amc_default">@f=(1,2);</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc4"></div></td><td><code><span class="amc_default">$sum=2;</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc5"></div></td><td><code><span class="amc_default">while(($f=$f[0]+$f[1]) &lt;= 4_000_000) {</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc6"></div></td><td><code><span class="amc_default">&#160;&#160;&#160;&#160;&#160;&#160; shift @f; push @f,$f;</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc7"></div></td><td><code><span class="amc_default">$sum+=$f if $f%2==0 }</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc8"></div></td><td><code><span class="amc_default">print $sum, "\n";</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc9"></div></td><td><code><span class="amc_default"># Answer = 4613732</span></code></td></tr>
</table></div>

<p>Vemos que el programa Perl se suma a $sum donde la variable $f es un n&#250;mero par, y los lazos hasta que el valor cambiado en la memoria (que se a&#241;ade a cada valor anterior para producir la serie de Fibonacci) es superior a 4.000.000.</p>

<p>	<br />
&#191;C&#243;mo podemos lograr esto en MySQL? Una vez m&#225;s (como en la primera entrada) vamos a utilizar variables para iterar. Con el fin de obtener la secuencia de Fibonacci se puede utilizar este...</p>

<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">set @varsum=1;</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc2"></div></td><td><code><span class="amc_default">set @varadd=1;</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc3"></div></td><td><code><span class="amc_default">set @var1=1;</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc4"></div></td><td><code><span class="amc_default">set @var2=1;</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc5"></div></td><td><code>&nbsp;</code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc6"></div></td><td><code><span class="amc_default">select @varsum:=@varadd+@varsum as fibonacci,</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc7"></div></td><td><code><span class="amc_default">&#160;&#160;&#160;&#160;&#160;&#160; @varadd:=@var2,</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc8"></div></td><td><code><span class="amc_default">&#160;&#160;&#160;&#160;&#160;&#160; @var2:=@varsum, orderid </span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc9"></div></td><td><code><span class="amc_default">from orders limit 40;</span></code></td></tr>
</table></div>

<p>	<br />
(orders es una tabla que yo uso que tiene miles de filas).<br />
Puse 40 en la cl&#225;usula de LIMIT despu&#233;s de un poco de ensayo y error. Recuerdes restaurar las variables cada vez que se ejecuta una consulta como esta.	<br />
A continuaci&#243;n, puede hacer una suma de los valores devueltos cuando el valor de Fibonacci es menos de 4 millones de d&#243;lares, mediante un INNER SELECT:</p>

<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">set @varsum=1;</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc2"></div></td><td><code><span class="amc_default">set @varadd=1;</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc3"></div></td><td><code><span class="amc_default">set @var1=1;</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc4"></div></td><td><code><span class="amc_default">set @var2=1;</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc5"></div></td><td><code>&nbsp;</code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc6"></div></td><td><code><span class="amc_default">select sum(fibonacci) from (select @varsum:=@varadd+@varsum as fibonacci,@varadd:=@var2,@var2:=@varsum, orderid from orders limit 40) tmp where fibonacci &lt; 4000000;</span></code></td></tr>
</table></div>

<p>Pero estamos sumando todos los n&#250;meros haciendo esto - el problema dice que s&#243;lo debe sumar los n&#250;meros pares de la secuencia. Modificar f&#225;cilmente (v&#233;te la soluci&#243;n para el n&#250;mero 1) utilizando la funci&#243;n MOD:</p>

<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">set @varsum=1;</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc2"></div></td><td><code><span class="amc_default">set @varadd=1;</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc3"></div></td><td><code><span class="amc_default">set @var1=1;</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc4"></div></td><td><code><span class="amc_default">set @var2=1;</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc5"></div></td><td><code>&nbsp;</code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc6"></div></td><td><code><span class="amc_default">select sum(fibonacci) from </span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc7"></div></td><td><code><span class="amc_default">(select @varsum:=@varadd+@varsum as fibonacci,</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc8"></div></td><td><code><span class="amc_default">@varadd:=@var2, @var2:=@varsum </span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc9"></div></td><td><code><span class="amc_default">from orders limit 40) tmp </span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc0"><div class="amc1"></div></div></td><td><code><span class="amc_default">where fibonacci &lt; 4000000 </span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc1"><div class="amc1"></div></div></td><td><code><span class="amc_default">and mod(fibonacci,2)=0;</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc2"><div class="amc1"></div></div></td><td><code>&nbsp;</code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc3"><div class="amc1"></div></div></td><td><code><span class="amc_default">+----------------+</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc4"><div class="amc1"></div></div></td><td><code><span class="amc_default">| sum(fibonacci) |</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc5"><div class="amc1"></div></div></td><td><code><span class="amc_default">+----------------+</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc6"><div class="amc1"></div></div></td><td><code><span class="amc_default">|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;4613732 | </span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc7"><div class="amc1"></div></div></td><td><code><span class="amc_default">+----------------+</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc8"><div class="amc1"></div></div></td><td><code><span class="amc_default">1 row in set (0.27 sec)</span></code></td></tr>
</table></div>

<p>	<br />
Espero que este c&#243;digo es de utilidad para alguien.<br />
Saludos, Mark</p><div class="item_footer"><p><small><a href="http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2009/09/05/proyecto-euler-2-en-mysql">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2009/09/05/proyecto-euler-2-en-mysql#comments</comments>
		</item>
				<item>
			<title>Proyecto Euler 1 en Mysql</title>
			<link>http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2009/09/01/proyecto-euler-1-en-mysql</link>
			<pubDate>Tue, 01 Sep 2009 17:27:33 +0000</pubDate>			<dc:creator>admin</dc:creator>
			<category domain="alt">Aprendiz</category>
<category domain="main">Trucos avanzado</category>			<guid isPermaLink="false">65@http://www.oxfordtechnotes.co.uk/sqlblog/</guid>
						<description>&lt;p&gt;Hola, he llegado recientemente a trav&amp;#233;s del Proyecto de Euler &lt;a href=&quot;http://projecteuler.net/&quot;&gt;http://projecteuler.net/&lt;/a&gt; que plantea retos matem&amp;#225;ticos en cualquier lenguaje de codificaci&amp;#243;n que prefieres utilizar. 	&lt;br /&gt;
Entonces no estoy diciendo que MySQL es especialmente apto para afrontar estos retos, pero me preguntaba si yo podr&amp;#237;a resolver uno o dos solamente por el uso de MySQL.&lt;/p&gt;

&lt;p&gt;He aqu&amp;#237; la primera cuesti&amp;#243;n&lt;br /&gt;
&lt;strong&gt;&lt;br /&gt;
Si hacemos una lista de los numeros naturales m&amp;#250;ltiplos de 3 &amp;#243; 5, menores de 10.&lt;br /&gt;
Obtenemos 3,5,6 y 9. La suma de estos m&amp;#250;ltiplos es 23.&lt;br /&gt;
&lt;br /&gt;
Hallar la suma de todos los multiplos de 3 o 5 menores de 1000.&lt;br /&gt;
&lt;/strong&gt;&lt;br /&gt;
En primer lugar voy a investigar la forma en que se puede hacer en Perl y luego ver c&amp;#243;mo se puede aplicar esto en Mysql. (La siguiente es una adaptaci&amp;#243;n de una soluci&amp;#243;n Perl que he encontrado en &lt;a href=&quot;http://www.ajs.com/ajswiki/Euler_problems_as_perl_oneliners&quot;&gt; Euler_problems_as_perl_oneliners&lt;/a&gt; )&lt;/p&gt;

&lt;p&gt;#!/usr/bin/perl&lt;br /&gt;
# adds each multiple of 3 to $n&lt;br /&gt;
# then adds each mutiple of 5 to $n unless divisible by 3&lt;br /&gt;
# to avoid duplication!&lt;/p&gt;

&lt;p&gt;$n=0;&lt;br /&gt;
for($i=3;$i&amp;lt;1000;$i+=3) {$n+=$i}&lt;/p&gt;

&lt;p&gt;       for($i=5;$i&amp;lt;1000;$i+=5)&lt;br /&gt;
 {$n+=$i unless $i%3 == 0}&lt;br /&gt;
 print $n, &quot;\n&quot;;&lt;/p&gt;

&lt;p&gt;# produces 233168 &lt;/p&gt;

&lt;p&gt;	&lt;br /&gt;
Por mi c&amp;#243;digo de MySQL voy a empezar por ver c&amp;#243;mo probar si un n&amp;#250;mero es divisible por otro n&amp;#250;mero en sql. Una forma es utilizar la funci&amp;#243;n de &lt;strong&gt;MOD&lt;/strong&gt; que devuelve el resto exacto tras la divisi&amp;#243;n (Es operaci&amp;#243;n de m&amp;#243;dulo). Por lo tanto, debe retornar 0, cuando el n&amp;#250;mero es divisible por tu numero de prueba.  Asi, &lt;strong&gt;select mod(9,3);&lt;/strong&gt; retorna 0 mientras &lt;strong&gt;select mod(8,2); &lt;/strong&gt;retorna 2.&lt;br /&gt;
	&lt;br /&gt;
A continuaci&amp;#243;n, necesitamos una manera de reiterar hasta 999 (es decir, todos los n&amp;#250;meros por debajo de 1000). Suelo usar una tabla llena con n&amp;#250;meros ascendentes para este tipo de tarea; sin embargo, es posible utilizar una t&amp;#233;cnica de variables, siempre que se inscriba a una tabla de base de datos con el n&amp;#250;mero necesario de filas en &amp;#233;l. Por ejemplo, si tenemos una tabla llamada orders con 20.000 registros, se puede traer de vuelta a tan s&amp;#243;lo 20 filas numeradas como este:&lt;/p&gt;
&lt;p class=&quot;amcode&quot;&gt;Code:&lt;/p&gt;&lt;div class=&quot;codeblock amc_code amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;select @rownum:=@rownum+1 'row_num', e.* from orders e,&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt; (SELECT @rownum:=0) r &lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;order by orderid desc limit 20&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;	&lt;br /&gt;
As&amp;#237;, con el fin de traer de vuelta a todos aquellos en los que el row_num campo es divisible por 3, ponemos el c&amp;#243;digo anterior en un SELECT interno (Inner Select):&lt;/p&gt;

&lt;p class=&quot;amcode&quot;&gt;Code:&lt;/p&gt;&lt;div class=&quot;codeblock amc_code amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;select row_num from &lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;(select @rownum:=@rownum+1 'row_num'&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;from orders e,&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt; (SELECT @rownum:=0) r&amp;#160;&amp;#160;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc5&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;order by orderid desc limit 20) tmp &lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc6&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;where mod(row_num,3) = 0;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;	&lt;br /&gt;
Por &amp;#250;ltimo a&amp;#241;adir una cl&amp;#225;usula de OR incluir n&amp;#250;meros divisibles por 5, y suma el resultado:&lt;/p&gt;

&lt;p class=&quot;amcode&quot;&gt;Code:&lt;/p&gt;&lt;div class=&quot;codeblock amc_code amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;select sum(row_num) from &lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;(select @rownum:=@rownum+1 'row_num'&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt; from orders e,&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;(SELECT @rownum:=0) r&amp;#160;&amp;#160;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc5&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;order by orderid desc limit 999) tmp &lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc6&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;where mod(row_num,3) = 0 or mod(row_num,5) = 0;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Esto da una respuesta de: 233168. Se volvi&amp;#243; bastante r&amp;#225;pidamente tambi&amp;#233;n - apenas 0,08 de segundo! Hasta pronto!&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2009/09/01/proyecto-euler-1-en-mysql&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>Hola, he llegado recientemente a trav&#233;s del Proyecto de Euler <a href="http://projecteuler.net/">http://projecteuler.net/</a> que plantea retos matem&#225;ticos en cualquier lenguaje de codificaci&#243;n que prefieres utilizar. 	<br />
Entonces no estoy diciendo que MySQL es especialmente apto para afrontar estos retos, pero me preguntaba si yo podr&#237;a resolver uno o dos solamente por el uso de MySQL.</p>

<p>He aqu&#237; la primera cuesti&#243;n<br />
<strong><br />
Si hacemos una lista de los numeros naturales m&#250;ltiplos de 3 &#243; 5, menores de 10.<br />
Obtenemos 3,5,6 y 9. La suma de estos m&#250;ltiplos es 23.<br />
<br />
Hallar la suma de todos los multiplos de 3 o 5 menores de 1000.<br />
</strong><br />
En primer lugar voy a investigar la forma en que se puede hacer en Perl y luego ver c&#243;mo se puede aplicar esto en Mysql. (La siguiente es una adaptaci&#243;n de una soluci&#243;n Perl que he encontrado en <a href="http://www.ajs.com/ajswiki/Euler_problems_as_perl_oneliners"> Euler_problems_as_perl_oneliners</a> )</p>

<p>#!/usr/bin/perl<br />
# adds each multiple of 3 to $n<br />
# then adds each mutiple of 5 to $n unless divisible by 3<br />
# to avoid duplication!</p>

<p>$n=0;<br />
for($i=3;$i&lt;1000;$i+=3) {$n+=$i}</p>

<p>       for($i=5;$i&lt;1000;$i+=5)<br />
 {$n+=$i unless $i%3 == 0}<br />
 print $n, "\n";</p>

<p># produces 233168 </p>

<p>	<br />
Por mi c&#243;digo de MySQL voy a empezar por ver c&#243;mo probar si un n&#250;mero es divisible por otro n&#250;mero en sql. Una forma es utilizar la funci&#243;n de <strong>MOD</strong> que devuelve el resto exacto tras la divisi&#243;n (Es operaci&#243;n de m&#243;dulo). Por lo tanto, debe retornar 0, cuando el n&#250;mero es divisible por tu numero de prueba.  Asi, <strong>select mod(9,3);</strong> retorna 0 mientras <strong>select mod(8,2); </strong>retorna 2.<br />
	<br />
A continuaci&#243;n, necesitamos una manera de reiterar hasta 999 (es decir, todos los n&#250;meros por debajo de 1000). Suelo usar una tabla llena con n&#250;meros ascendentes para este tipo de tarea; sin embargo, es posible utilizar una t&#233;cnica de variables, siempre que se inscriba a una tabla de base de datos con el n&#250;mero necesario de filas en &#233;l. Por ejemplo, si tenemos una tabla llamada orders con 20.000 registros, se puede traer de vuelta a tan s&#243;lo 20 filas numeradas como este:</p>
<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">select @rownum:=@rownum+1 'row_num', e.* from orders e,&#160;&#160;&#160;&#160; </span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc2"></div></td><td><code><span class="amc_default"> (SELECT @rownum:=0) r </span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc3"></div></td><td><code><span class="amc_default">order by orderid desc limit 20</span></code></td></tr>
</table></div>
<p>	<br />
As&#237;, con el fin de traer de vuelta a todos aquellos en los que el row_num campo es divisible por 3, ponemos el c&#243;digo anterior en un SELECT interno (Inner Select):</p>

<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">select row_num from </span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc2"></div></td><td><code><span class="amc_default">(select @rownum:=@rownum+1 'row_num'</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc3"></div></td><td><code><span class="amc_default">from orders e,&#160;&#160;&#160;&#160;</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc4"></div></td><td><code><span class="amc_default"> (SELECT @rownum:=0) r&#160;&#160;</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc5"></div></td><td><code><span class="amc_default">order by orderid desc limit 20) tmp </span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc6"></div></td><td><code><span class="amc_default">where mod(row_num,3) = 0;</span></code></td></tr>
</table></div>

<p>	<br />
Por &#250;ltimo a&#241;adir una cl&#225;usula de OR incluir n&#250;meros divisibles por 5, y suma el resultado:</p>

<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">select sum(row_num) from </span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc2"></div></td><td><code><span class="amc_default">(select @rownum:=@rownum+1 'row_num'</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc3"></div></td><td><code><span class="amc_default"> from orders e,&#160;&#160;&#160;&#160; </span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc4"></div></td><td><code><span class="amc_default">(SELECT @rownum:=0) r&#160;&#160;</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc5"></div></td><td><code><span class="amc_default">order by orderid desc limit 999) tmp </span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc6"></div></td><td><code><span class="amc_default">where mod(row_num,3) = 0 or mod(row_num,5) = 0;</span></code></td></tr>
</table></div>

<p>Esto da una respuesta de: 233168. Se volvi&#243; bastante r&#225;pidamente tambi&#233;n - apenas 0,08 de segundo! Hasta pronto!</p><div class="item_footer"><p><small><a href="http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2009/09/01/proyecto-euler-1-en-mysql">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2009/09/01/proyecto-euler-1-en-mysql#comments</comments>
		</item>
				<item>
			<title>Trucos y consejos &#250;tiles</title>
			<link>http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2009/07/02/trucos-y-consejos-utiles</link>
			<pubDate>Thu, 02 Jul 2009 18:26:02 +0000</pubDate>			<dc:creator>admin</dc:creator>
			<category domain="main">Aprendiz</category>			<guid isPermaLink="false">61@http://www.oxfordtechnotes.co.uk/sqlblog/</guid>
						<description>&lt;p&gt;Mi intenci&amp;#243;n es incluir en este hilo, los peque&amp;#241;os trucos y consejos que me he encontrado con el tiempo, que realmente ayuda al utilizar Mysql. Yo probablemente a&amp;#241;adir a este hilo como encontrar m&amp;#225;s.&lt;br /&gt;
	&lt;br /&gt;
Por ejemplo, si est&amp;#225;s utilizando commandline-Mysql (es decir - la herramienta int&amp;#233;rprete de comandos mysql), puedes mostrar la estructura de una tabla de base de datos muy f&amp;#225;cilmente (Muestra la sentencia CREATE TABLE que se utiliz&amp;#243; para crear la tabla):&lt;/p&gt;
&lt;p class=&quot;amcode&quot;&gt;Code:&lt;/p&gt;&lt;div class=&quot;codeblock amc_code amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;show create table table_name;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;	&lt;br /&gt;
Una sugerencia &amp;#250;til cuando se ejecuta consultas SQL (una vez m&amp;#225;s cuando se utiliza commandline-Mysql) es poner fin a una consulta con \G en lugar de usar un punto y coma. Esto muestra los registros en formato de registro en lugar de columnas.&lt;br /&gt;
	&lt;br /&gt;
Normalmente, las consultas de Mysql no tienen sensibilidad entre may&amp;#250;sculas y min&amp;#250;sculas - si buscas un campo que contenga '%Rey%&quot;, la consulta traer&amp;#225; de vuelta los resultados en los que el campo contiene &quot;rey&quot;,&quot;Rey&quot;o incluso&quot;REY&quot;. Para hacer que tus consultas sean sensibles a las may&amp;#250;sculas, te recomiendo que utilizas el operador &lt;strong&gt;BINARY&lt;/strong&gt; en las expresiones. Por ejemplo:&lt;/p&gt;

&lt;p class=&quot;amcode&quot;&gt;Code:&lt;/p&gt;&lt;div class=&quot;codeblock amc_code amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;Select campo from T1Nombre where binary campo like '%Rey%';&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;	&lt;br /&gt;
Si est&amp;#225;s realizando operaciones en una campo tipo datetime, utiliza la funci&amp;#243;n de &quot;date&quot;, por ejemplo:&lt;/p&gt;

&lt;p class=&quot;amcode&quot;&gt;Code:&lt;/p&gt;&lt;div class=&quot;codeblock amc_code amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;select fechadeorden from tablaentries where date(fechadeorden) = '2008-04-14' \G&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Hay m&amp;#225;s!	&lt;br /&gt;
Si deseas cambiar el orden de una sortear (por ejemplo, ordenar por 1, 4, 3, 2 en vez de 1, 2, 3,4) &lt;br /&gt;
puede utilizar la funci&amp;#243;n &lt;strong&gt;field&lt;/strong&gt; en el cl&amp;#225;usula &lt;strong&gt;Order By&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Por ejemplo&lt;/p&gt;

&lt;p class=&quot;amcode&quot;&gt;Code:&lt;/p&gt;&lt;div class=&quot;codeblock amc_code amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;Order By Field(campo_sortear,1,4,3,2)&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Puedes leer m&amp;#225;s sobre &lt;strong&gt;Field&lt;/strong&gt; e otros funciones para cadenas de caracteres &lt;a href=&quot;http://dev.mysql.com/doc/refman/5.0/es/string-functions.html&quot;&gt;aqui !!!&lt;/a&gt;. Por supuesto, siempre podr&amp;#225;s utilizar el CASE declaraci&amp;#243;n en el cl&amp;#225;usula ORDER BY, pero siempre es bueno tener una opci&amp;#243;n!&lt;br /&gt;
	&lt;br /&gt;
A veces es bueno saber el rango de valores en su b&amp;#250;squeda/consulta de datos - lo que es el valor m&amp;#225;ximo, la longitud m&amp;#237;nima almacenados, etc -especialmente cuando se trabaja qu&amp;#233; tipo de &amp;#237;ndice para aplicar. En este escenario, el &lt;strong&gt;Procedimiento Analyse&lt;/strong&gt; es muy &amp;#250;til. Esto examina el resultado de tu consulta y retorna un an&amp;#225;lisis del resultado. Por ejemplo:&lt;/p&gt;

&lt;p class=&quot;amcode&quot;&gt;Code:&lt;/p&gt;&lt;div class=&quot;codeblock amc_code amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;select * from orders procedure analyse(0,0)\G&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;	&lt;br /&gt;
Aunque es en Ingl&amp;#233;s, aqu&amp;#237; es un art&amp;#237;culo muy &amp;#250;til &lt;br /&gt;
&lt;a href=&quot;http://fernandoipar.com/2009/08/12/indexing-text-columns-in-mysql/&quot;&gt;sobre crear un &amp;#237;ndice en columnas de texto en Mysql. &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2009/07/02/trucos-y-consejos-utiles&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>Mi intenci&#243;n es incluir en este hilo, los peque&#241;os trucos y consejos que me he encontrado con el tiempo, que realmente ayuda al utilizar Mysql. Yo probablemente a&#241;adir a este hilo como encontrar m&#225;s.<br />
	<br />
Por ejemplo, si est&#225;s utilizando commandline-Mysql (es decir - la herramienta int&#233;rprete de comandos mysql), puedes mostrar la estructura de una tabla de base de datos muy f&#225;cilmente (Muestra la sentencia CREATE TABLE que se utiliz&#243; para crear la tabla):</p>
<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">show create table table_name;</span></code></td></tr>
</table></div>
<p>	<br />
Una sugerencia &#250;til cuando se ejecuta consultas SQL (una vez m&#225;s cuando se utiliza commandline-Mysql) es poner fin a una consulta con \G en lugar de usar un punto y coma. Esto muestra los registros en formato de registro en lugar de columnas.<br />
	<br />
Normalmente, las consultas de Mysql no tienen sensibilidad entre may&#250;sculas y min&#250;sculas - si buscas un campo que contenga '%Rey%", la consulta traer&#225; de vuelta los resultados en los que el campo contiene "rey","Rey"o incluso"REY". Para hacer que tus consultas sean sensibles a las may&#250;sculas, te recomiendo que utilizas el operador <strong>BINARY</strong> en las expresiones. Por ejemplo:</p>

<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">Select campo from T1Nombre where binary campo like '%Rey%';</span></code></td></tr>
</table></div>
<p>	<br />
Si est&#225;s realizando operaciones en una campo tipo datetime, utiliza la funci&#243;n de "date", por ejemplo:</p>

<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">select fechadeorden from tablaentries where date(fechadeorden) = '2008-04-14' \G</span></code></td></tr>
</table></div>

<p>Hay m&#225;s!	<br />
Si deseas cambiar el orden de una sortear (por ejemplo, ordenar por 1, 4, 3, 2 en vez de 1, 2, 3,4) <br />
puede utilizar la funci&#243;n <strong>field</strong> en el cl&#225;usula <strong>Order By</strong>.</p>

<p>Por ejemplo</p>

<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">Order By Field(campo_sortear,1,4,3,2)</span></code></td></tr>
</table></div>

<p>Puedes leer m&#225;s sobre <strong>Field</strong> e otros funciones para cadenas de caracteres <a href="http://dev.mysql.com/doc/refman/5.0/es/string-functions.html">aqui !!!</a>. Por supuesto, siempre podr&#225;s utilizar el CASE declaraci&#243;n en el cl&#225;usula ORDER BY, pero siempre es bueno tener una opci&#243;n!<br />
	<br />
A veces es bueno saber el rango de valores en su b&#250;squeda/consulta de datos - lo que es el valor m&#225;ximo, la longitud m&#237;nima almacenados, etc -especialmente cuando se trabaja qu&#233; tipo de &#237;ndice para aplicar. En este escenario, el <strong>Procedimiento Analyse</strong> es muy &#250;til. Esto examina el resultado de tu consulta y retorna un an&#225;lisis del resultado. Por ejemplo:</p>

<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">select * from orders procedure analyse(0,0)\G</span></code></td></tr>
</table></div>
<p>	<br />
Aunque es en Ingl&#233;s, aqu&#237; es un art&#237;culo muy &#250;til <br />
<a href="http://fernandoipar.com/2009/08/12/indexing-text-columns-in-mysql/">sobre crear un &#237;ndice en columnas de texto en Mysql. </a></p><div class="item_footer"><p><small><a href="http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2009/07/02/trucos-y-consejos-utiles">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2009/07/02/trucos-y-consejos-utiles#comments</comments>
		</item>
				<item>
			<title>Problemas de importaci&#243;n de los campos de fecha de Excel</title>
			<link>http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2009/06/11/problemas-de-importacion-de-los-campos-d</link>
			<pubDate>Thu, 11 Jun 2009 19:02:24 +0000</pubDate>			<dc:creator>admin</dc:creator>
			<category domain="main">Aprendiz</category>			<guid isPermaLink="false">59@http://www.oxfordtechnotes.co.uk/sqlblog/</guid>
						<description>&lt;p&gt;Yo quer&amp;#237;a importar los siguientes datos de una hoja de c&amp;#225;lculo en mi tabla de base de datos&lt;/p&gt;

&lt;p class=&quot;amcode&quot;&gt;Code:&lt;/p&gt;&lt;div class=&quot;codeblock amc_code amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;orderid&amp;#160;&amp;#160;customerid&amp;#160;&amp;#160;orderdate&amp;#160;&amp;#160;city&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;&amp;#160;&amp;#160;800&amp;#160;&amp;#160;&amp;#160;&amp;#160;15&amp;#160;&amp;#160;&amp;#160;&amp;#160; 15/02/09&amp;#160;&amp;#160;London&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;&amp;#160;&amp;#160;801&amp;#160;&amp;#160;&amp;#160;&amp;#160;22&amp;#160;&amp;#160;&amp;#160;&amp;#160; 22/02/09&amp;#160;&amp;#160;Glasgow&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;&amp;#160;&amp;#160;802&amp;#160;&amp;#160;&amp;#160;&amp;#160;15&amp;#160;&amp;#160;&amp;#160;&amp;#160; 20/03/09&amp;#160;&amp;#160;London&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc5&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;&amp;#160;&amp;#160;803&amp;#160;&amp;#160;&amp;#160;&amp;#160;24&amp;#160;&amp;#160;&amp;#160;&amp;#160; 21/03/09&amp;#160;&amp;#160;Aberdeen&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc6&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;&amp;#160;&amp;#160;804&amp;#160;&amp;#160;&amp;#160;&amp;#160;76&amp;#160;&amp;#160;&amp;#160;&amp;#160; 13/04/09&amp;#160;&amp;#160;Grimsby&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Despu&amp;#233;s de guardar la hoja de c&amp;#225;lculo en formato CSV (delimitado por comas) fue mi primer intento de utilizar la sintaxis del comando &quot;LOAD DATA&quot;.&lt;/p&gt;

&lt;p class=&quot;amcode&quot;&gt;Code:&lt;/p&gt;&lt;div class=&quot;codeblock amc_code amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;LOAD DATA INFILE 'C:\\ordertest.csv' INTO TABLE testorders&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;&amp;#160;&amp;#160;LINES terminated BY '\n';&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Hab&amp;#237;a le&amp;#237;do que esto rara vez funciona, as&amp;#237; no me sorprendi&amp;#243; encontrar problemas en los datos insertados (aunque por lo menos hizo algunos intentos de poblar la tabla desde el archivo). &lt;br /&gt;
Por lo tanto, decid&amp;#237; utilizar el mecanismo de IMPORT en phpMyAdmin, despu&amp;#233;s de la primera selecci&amp;#243;n de la tabla necesario. Una opci&amp;#243;n &amp;#250;til es especificar aqu&amp;#237; el n&amp;#250;mero de registros para saltar desde el comienzo del archivo - esto me permiti&amp;#243; pasar el registro cabecera (nombres de campo) de que no desea importar. Sin embargo las opciones por defecto me falle.	El &quot;FIELDS TERMINATED BY&quot; caja tiene un defecto de &quot;;&quot; cuando lo necesitamos &quot;,&quot;. De todos modos, despu&amp;#233;s de corregir esto mediante la introducci&amp;#243;n de la coma, estaba en condiciones de importar los registros. Sin embargo todav&amp;#237;a hab&amp;#237;a un problema - la fecha de todas las columnas mostr&amp;#243; 00/00/00. Esto se debe a que MySQL usa el formato de una fecha diferente a Microsoft Excel. C&amp;#243;mo encontrar la soluci&amp;#243;n a esto? Volv&amp;#237; a la hoja Excel y cambiar el formato del campo a la fecha yyyy-mm-dd (formato de ingles, es aaaa-mm-dd en espanol?) antes de guardar como un archivo CSV (delimitado por comas) y pasar por el proceso de nuevo. Al final he podido importar los datos que yo quer&amp;#237;a.&lt;br /&gt;
	&lt;br /&gt;
Otras soluciones podr&amp;#237;an haber incluy&amp;#243; el uso de OpenOffice para crear la hoja de c&amp;#225;lculo y csv, usando ODBC preguntas en Mysql, usando Navicat, php o utilizando un programa para leer e importar los datos. 	&lt;br /&gt;
Espero a ver estas opciones en futuros art&amp;#237;culos.&lt;/p&gt;

&lt;p&gt;Por cierto, en el pasado, cuando hacia la transferencia de datos de hojas de c&amp;#225;lculo en bases de datos he utilizado la siguiente t&amp;#233;cnica. Uso la funci&amp;#243;n de Excel &quot;concatenar&quot; para crear una declaraci&amp;#243;n de sql INSERT en una sola l&amp;#237;nea y, a continuaci&amp;#243;n, copia la funci&amp;#243;n abajo. Por ejemplo, para insertar los dos primeros campos s&amp;#243;lo, yo har&amp;#237;a lo siguiente en Excel y, a continuaci&amp;#243;n, copia los consultas de sql en Mysql.&lt;/p&gt;

&lt;p class=&quot;amcode&quot;&gt;Code:&lt;/p&gt;&lt;div class=&quot;codeblock amc_code amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;=CONCATENAR(&quot;INSERT INTO testorders (orderid, customerid) VALUES (&quot;;A2;&quot;,&quot;;B2;&quot;)&quot;)&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Esto resulta en lo siguiente&lt;/p&gt;

&lt;p class=&quot;amcode&quot;&gt;Code:&lt;/p&gt;&lt;div class=&quot;codeblock amc_code amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;INSERT INTO testorders (orderid, customerid) VALUES (840,25)&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;	&lt;br /&gt;
Recuerda, sin embargo, tener cuidado en relaci&amp;#243;n con diferentes tipos de datos; 	por ejemplo, tendr&amp;#225;s que incluir el ap&amp;#243;strofe en la concatenaci&amp;#243;n cuando el campo es del formato varchar.&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2009/06/11/problemas-de-importacion-de-los-campos-d&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>Yo quer&#237;a importar los siguientes datos de una hoja de c&#225;lculo en mi tabla de base de datos</p>

<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">orderid&#160;&#160;customerid&#160;&#160;orderdate&#160;&#160;city</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc2"></div></td><td><code><span class="amc_default">&#160;&#160;800&#160;&#160;&#160;&#160;15&#160;&#160;&#160;&#160; 15/02/09&#160;&#160;London</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc3"></div></td><td><code><span class="amc_default">&#160;&#160;801&#160;&#160;&#160;&#160;22&#160;&#160;&#160;&#160; 22/02/09&#160;&#160;Glasgow</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc4"></div></td><td><code><span class="amc_default">&#160;&#160;802&#160;&#160;&#160;&#160;15&#160;&#160;&#160;&#160; 20/03/09&#160;&#160;London</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc5"></div></td><td><code><span class="amc_default">&#160;&#160;803&#160;&#160;&#160;&#160;24&#160;&#160;&#160;&#160; 21/03/09&#160;&#160;Aberdeen</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc6"></div></td><td><code><span class="amc_default">&#160;&#160;804&#160;&#160;&#160;&#160;76&#160;&#160;&#160;&#160; 13/04/09&#160;&#160;Grimsby</span></code></td></tr>
</table></div>

<p>Despu&#233;s de guardar la hoja de c&#225;lculo en formato CSV (delimitado por comas) fue mi primer intento de utilizar la sintaxis del comando "LOAD DATA".</p>

<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">LOAD DATA INFILE 'C:\\ordertest.csv' INTO TABLE testorders</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc2"></div></td><td><code><span class="amc_default">&#160;&#160;LINES terminated BY '\n';</span></code></td></tr>
</table></div>

<p>Hab&#237;a le&#237;do que esto rara vez funciona, as&#237; no me sorprendi&#243; encontrar problemas en los datos insertados (aunque por lo menos hizo algunos intentos de poblar la tabla desde el archivo). <br />
Por lo tanto, decid&#237; utilizar el mecanismo de IMPORT en phpMyAdmin, despu&#233;s de la primera selecci&#243;n de la tabla necesario. Una opci&#243;n &#250;til es especificar aqu&#237; el n&#250;mero de registros para saltar desde el comienzo del archivo - esto me permiti&#243; pasar el registro cabecera (nombres de campo) de que no desea importar. Sin embargo las opciones por defecto me falle.	El "FIELDS TERMINATED BY" caja tiene un defecto de ";" cuando lo necesitamos ",". De todos modos, despu&#233;s de corregir esto mediante la introducci&#243;n de la coma, estaba en condiciones de importar los registros. Sin embargo todav&#237;a hab&#237;a un problema - la fecha de todas las columnas mostr&#243; 00/00/00. Esto se debe a que MySQL usa el formato de una fecha diferente a Microsoft Excel. C&#243;mo encontrar la soluci&#243;n a esto? Volv&#237; a la hoja Excel y cambiar el formato del campo a la fecha yyyy-mm-dd (formato de ingles, es aaaa-mm-dd en espanol?) antes de guardar como un archivo CSV (delimitado por comas) y pasar por el proceso de nuevo. Al final he podido importar los datos que yo quer&#237;a.<br />
	<br />
Otras soluciones podr&#237;an haber incluy&#243; el uso de OpenOffice para crear la hoja de c&#225;lculo y csv, usando ODBC preguntas en Mysql, usando Navicat, php o utilizando un programa para leer e importar los datos. 	<br />
Espero a ver estas opciones en futuros art&#237;culos.</p>

<p>Por cierto, en el pasado, cuando hacia la transferencia de datos de hojas de c&#225;lculo en bases de datos he utilizado la siguiente t&#233;cnica. Uso la funci&#243;n de Excel "concatenar" para crear una declaraci&#243;n de sql INSERT en una sola l&#237;nea y, a continuaci&#243;n, copia la funci&#243;n abajo. Por ejemplo, para insertar los dos primeros campos s&#243;lo, yo har&#237;a lo siguiente en Excel y, a continuaci&#243;n, copia los consultas de sql en Mysql.</p>

<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">=CONCATENAR("INSERT INTO testorders (orderid, customerid) VALUES (";A2;",";B2;")")</span></code></td></tr>
</table></div>
<p>Esto resulta en lo siguiente</p>

<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">INSERT INTO testorders (orderid, customerid) VALUES (840,25)</span></code></td></tr>
</table></div>
<p>	<br />
Recuerda, sin embargo, tener cuidado en relaci&#243;n con diferentes tipos de datos; 	por ejemplo, tendr&#225;s que incluir el ap&#243;strofe en la concatenaci&#243;n cuando el campo es del formato varchar.</p><div class="item_footer"><p><small><a href="http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2009/06/11/problemas-de-importacion-de-los-campos-d">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2009/06/11/problemas-de-importacion-de-los-campos-d#comments</comments>
		</item>
				<item>
			<title>R&#225;pida soluci&#243;n para problema de Perl.</title>
			<link>http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2009/05/20/rapida-solucion-para-problema-de-perl</link>
			<pubDate>Wed, 20 May 2009 20:02:40 +0000</pubDate>			<dc:creator>admin</dc:creator>
			<category domain="main">Gesti&#243;n etc.</category>
<category domain="alt">Trucos avanzado</category>			<guid isPermaLink="false">57@http://www.oxfordtechnotes.co.uk/sqlblog/</guid>
						<description>&lt;p&gt;Una entrada muy r&amp;#225;pido esta vez. Yo tuve problemas para obtener el programa en Perl para usar el m&amp;#243;dulo DBI con Mysql. Segu&amp;#237; recibiendo este mensaje de error: &lt;strong&gt;Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'&lt;/strong&gt;&lt;br /&gt;
Bueno, despu&amp;#233;s de hacer un poco de b&amp;#250;squeda a trav&amp;#233;s de google, he encontrado la respuesta. Mi base de datos est&amp;#225; configurado en el servidor Apache, lo que significa que se encuentra archivo de socket mysqld en un lugar diferente. Para saber d&amp;#243;nde est&amp;#225; ubicado, ir a Mysql y ejecutar el siguiente comando:&lt;/p&gt;

&lt;p&gt;	&lt;/p&gt;&lt;p class=&quot;amcode&quot;&gt;Code:&lt;/p&gt;&lt;div class=&quot;codeblock amc_code amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;show variables like 'socket%';&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;	&lt;br /&gt;
Parece que la ubicaci&amp;#243;n en mi m&amp;#225;quina es &lt;strong&gt;/opt/lampp/var/mysql/mysqld.sock&lt;/strong&gt;&lt;br /&gt;
As&amp;#237;, entonces cambi&amp;#233; mi origen de datos en la l&amp;#237;nea de conectar a la programa de Perl para leer:&lt;br /&gt;
	&lt;/p&gt;&lt;p class=&quot;amcode&quot;&gt;Code:&lt;/p&gt;&lt;div class=&quot;codeblock amc_code amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;$dsn = &quot;DBI:mysql:$database:localhost:3306:mysql_socket=/opt/lampp/var/mysql/mysqld.sock&quot;;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Parece que es un obst&amp;#225;culo com&amp;#250;n, por lo que espero que esto ayuda a otros a continuar con su programaci&amp;#243;n en Perl.&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2009/05/20/rapida-solucion-para-problema-de-perl&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>Una entrada muy r&#225;pido esta vez. Yo tuve problemas para obtener el programa en Perl para usar el m&#243;dulo DBI con Mysql. Segu&#237; recibiendo este mensaje de error: <strong>Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'</strong><br />
Bueno, despu&#233;s de hacer un poco de b&#250;squeda a trav&#233;s de google, he encontrado la respuesta. Mi base de datos est&#225; configurado en el servidor Apache, lo que significa que se encuentra archivo de socket mysqld en un lugar diferente. Para saber d&#243;nde est&#225; ubicado, ir a Mysql y ejecutar el siguiente comando:</p>

<p>	</p><p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">show variables like 'socket%';</span></code></td></tr>
</table></div>

<p>	<br />
Parece que la ubicaci&#243;n en mi m&#225;quina es <strong>/opt/lampp/var/mysql/mysqld.sock</strong><br />
As&#237;, entonces cambi&#233; mi origen de datos en la l&#237;nea de conectar a la programa de Perl para leer:<br />
	</p><p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">$dsn = "DBI:mysql:$database:localhost:3306:mysql_socket=/opt/lampp/var/mysql/mysqld.sock";</span></code></td></tr>
</table></div>

<p>Parece que es un obst&#225;culo com&#250;n, por lo que espero que esto ayuda a otros a continuar con su programaci&#243;n en Perl.</p><div class="item_footer"><p><small><a href="http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2009/05/20/rapida-solucion-para-problema-de-perl">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2009/05/20/rapida-solucion-para-problema-de-perl#comments</comments>
		</item>
				<item>
			<title>M&#225;s informaci&#243;n sobre las variables.</title>
			<link>http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2009/05/02/mas-informacion-sobre-las-variables</link>
			<pubDate>Sat, 02 May 2009 12:19:32 +0000</pubDate>			<dc:creator>admin</dc:creator>
			<category domain="main">Gesti&#243;n etc.</category>
<category domain="alt">Trucos avanzado</category>			<guid isPermaLink="false">55@http://www.oxfordtechnotes.co.uk/sqlblog/</guid>
						<description>&lt;p&gt;Hola, yo pens&amp;#233; en hacer una peque&amp;#241;a adici&amp;#243;n a mi post anterior sobre las variables, ya que parece ser muy popular entre los lectores. En mi anterior entrada habl&amp;#233; principalmente de la utilizaci&amp;#243;n de las variables de sistema. Estos se establecen en el &amp;#225;mbito de tu per&amp;#237;odo de sesiones utilizando Mysql - una vez que la conexi&amp;#243;n se termina la variable sale de &amp;#225;mbito de aplicaci&amp;#243;n. Antes de ir a las variables globales, me gustar&amp;#237;a mostrar el mejor uso que he visto recientemente de una variable de sesi&amp;#243;n. Se utiliza como alternativa a la funci&amp;#243;n &lt;strong&gt;rownum&lt;/strong&gt;, que est&amp;#225; disponible en Oracle, pero no en Mysql. Aqu&amp;#237; hay un ejemplo de esto en uso:&lt;/p&gt;

&lt;p class=&quot;amcode&quot;&gt;Code:&lt;/p&gt;&lt;div class=&quot;codeblock amc_code amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;select @rownum:=@rownum+1 'row_num',&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt; e.* from emp e, &lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;(SELECT @rownum:=0) r &lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;order by empno desc limit 5;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;	&lt;br /&gt;
Con este c&amp;#243;digo se evita la necesidad de escribir una primera l&amp;#237;nea que asigna un valor a la variable antes de ejecutar la consulta de Select, es decir &lt;strong&gt;SET @rownum := 0; &lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;	&lt;br /&gt;
Ahora voy a escribir un poco sobre las variables de sistema, que son muy &amp;#250;tiles para las personas que tratan de mejorar el rendimiento de su sesi&amp;#243;n de Mysql. Normalmente puedes ver el estado de estas variables utilizando el comando &lt;strong&gt;SHOW VARIABLES&lt;/strong&gt;. Aunque las variables de sistema tienen valores por defecto, la mayor&amp;#237;a de ellas pueden cambiarse en tiempo de ejecuci&amp;#243;n usando el comando SET. Ver el enlace para ver mas sobre variables de sistema del servidor:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.0/es/server-system-variables.html&quot;&gt;manual server system variables&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tambi&amp;#233;n hay variables de estado del servidor. Estos existen en las conexiones, y se puede actualizarlas en el archivo de configuraci&amp;#243;n &lt;strong&gt;my.cnf&lt;/strong&gt; 	Normalmente puedes ver el estado de estas variables utilizando el sentencia &lt;strong&gt;SHOW STATUS.&lt;/strong&gt; Por ejemplo, el valor contra el nombre Select_full_join muestra el n&amp;#250;mero de Full-joins que no utilizan &amp;#237;ndices. Si ves aqu&amp;#237; un alto valor indica la necesidad de hacer una mejor indexaci&amp;#243;n de las tablas correspondientes. Ver el enlace para ver el manual sobre variables de estado del servidor:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.0/es/server-status-variables.html&quot;&gt; Manual server-status-variables&lt;br /&gt;
&lt;/a&gt;		&lt;/p&gt;

&lt;p&gt;Por cierto, aqu&amp;#237; hay un enlace que da 10 variables de MySql que debes controlar.&lt;br /&gt;
&lt;a href=&quot;http://blogs.techrepublic.com.com/opensource/?p=56&quot;&gt;techrepublic link&lt;/a&gt;  (en ingles)&lt;/p&gt;

&lt;p&gt;Las diez variables en el enlace anterior son:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Threads_connected&lt;/strong&gt;  -- El n&amp;#250;mero de conexiones abiertas actualmente. Esto puede ayudar en el an&amp;#225;lisis del tr&amp;#225;fico o de decidir el mejor momento para un servidor de volver a empezar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;br /&gt;
Created_tmp_disk_tables&lt;/strong&gt; -- El n&amp;#250;mero de tablas temporales en disco creadas autom&amp;#225;ticamente por el servidor mientras ejecutaba sentencias. Acceso a tablas en disco es generalmente m&amp;#225;s lento que el acceso a las mismas tablas en la memoria. Por lo tanto, las consultas que utilizan la sintaxis CREATE TEMPORARY TABLE puedan ser lento cuando este valor es alto.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Handler_read_first&lt;/strong&gt; -- El n&amp;#250;mero de veces que se lee la primera entrada de un &amp;#237;ndice. Si MySQL haga con frecuencia el acceso a la primera fila de una tabla de &amp;#237;ndice, sugiere que se trata de realizar un escaneo secuencial de todo el &amp;#237;ndice. Esto indica que la tabla correspondiente no ha sido debidamente indizados.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Innodb_buffer_pool_wait_free&lt;/strong&gt; -- Normalmente, las escrituras al buffer de InnoDB se llevan acabo en segundo plano. A&amp;#250;n as&amp;#237;, si es necesario leer o crear una p&amp;#225;gina y no existe ninguna p&amp;#225;gina vac&amp;#237;a disponible, entonces es tambi&amp;#233;n necesario esperar a que las p&amp;#225;ginas sean volcadas previamente. Este contador cuenta las instancias de estas esperas. Si el tama&amp;#241;o del buffer ha sido establecido correctamente, este valor deber&amp;#237;a ser peque&amp;#241;o.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key_reads&lt;/strong&gt; -- El n&amp;#250;mero de lecturas f&amp;#237;sicas de un bloque de claves desde disco. Si Key_reads es grande, entonces el valor de key_buffer_size es, probablemente, demasiado peque&amp;#241;o. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Max_used_connections&lt;/strong&gt; -- El n&amp;#250;mero m&amp;#225;ximo de conexiones que han sido utilizadas simult&amp;#225;neamente desde que el servidor ha sido iniciado. Este valor ofrece un punto de referencia para ayudarle a decidir el n&amp;#250;mero m&amp;#225;ximo de conexiones de su servidor debe apoyar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open_tables&lt;/strong&gt; -- El n&amp;#250;mero de tablas que han sido abiertas. Si Opened_tables es grande, probablemente el valor de table_cache es demasiado peque&amp;#241;o. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Select_full_join&lt;/strong&gt; -- El n&amp;#250;mero de joins que no utilizan &amp;#237;ndices. Si este valor no es 0, deber&amp;#237;a comprobar cuidadosamente los &amp;#237;ndices de sus tablas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Slow_queries&lt;/strong&gt; -- El n&amp;#250;mero de consultas que han tardado m&amp;#225;s de long_query_time segundos. Un valor alto indica que el n&amp;#250;mero de consultas no se ejecuta &amp;#243;ptimamente. Un siguiente paso necesario ser&amp;#237;a examinar el log de consultas lentas e identificar estas consultas para la optimizaci&amp;#243;n.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Uptime&lt;/strong&gt; -- El n&amp;#250;mero de segundos que el servidor ha estado funcionando ininterrumpidamente&lt;br /&gt;
	&lt;br /&gt;
Recuerda que si est&amp;#225;s buscando una variable espec&amp;#237;fica a trav&amp;#233;s de SHOW STATUS, siempre podri&amp;#225;s utilizar la cl&amp;#225;usula de LIKE por ejemplo:&lt;br /&gt;
 &lt;/p&gt;
&lt;p class=&quot;amcode&quot;&gt;Code:&lt;/p&gt;&lt;div class=&quot;codeblock amc_code amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class=&quot;amc_default&quot;&gt;show status like 'max%';&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;	&lt;br /&gt;
Bueno, como ya he dicho, es s&amp;#243;lo una breve entrada esta vez.&lt;/p&gt;

&lt;p&gt;Vuelvo&lt;/p&gt;

&lt;p&gt;Thanks,&lt;br /&gt;
Mark&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2009/05/02/mas-informacion-sobre-las-variables&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>Hola, yo pens&#233; en hacer una peque&#241;a adici&#243;n a mi post anterior sobre las variables, ya que parece ser muy popular entre los lectores. En mi anterior entrada habl&#233; principalmente de la utilizaci&#243;n de las variables de sistema. Estos se establecen en el &#225;mbito de tu per&#237;odo de sesiones utilizando Mysql - una vez que la conexi&#243;n se termina la variable sale de &#225;mbito de aplicaci&#243;n. Antes de ir a las variables globales, me gustar&#237;a mostrar el mejor uso que he visto recientemente de una variable de sesi&#243;n. Se utiliza como alternativa a la funci&#243;n <strong>rownum</strong>, que est&#225; disponible en Oracle, pero no en Mysql. Aqu&#237; hay un ejemplo de esto en uso:</p>

<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">select @rownum:=@rownum+1 'row_num',</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc2"></div></td><td><code><span class="amc_default"> e.* from emp e, </span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc3"></div></td><td><code><span class="amc_default">(SELECT @rownum:=0) r </span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc4"></div></td><td><code><span class="amc_default">order by empno desc limit 5;</span></code></td></tr>
</table></div>
<p>	<br />
Con este c&#243;digo se evita la necesidad de escribir una primera l&#237;nea que asigna un valor a la variable antes de ejecutar la consulta de Select, es decir <strong>SET @rownum := 0; </strong></p>

<p>	<br />
Ahora voy a escribir un poco sobre las variables de sistema, que son muy &#250;tiles para las personas que tratan de mejorar el rendimiento de su sesi&#243;n de Mysql. Normalmente puedes ver el estado de estas variables utilizando el comando <strong>SHOW VARIABLES</strong>. Aunque las variables de sistema tienen valores por defecto, la mayor&#237;a de ellas pueden cambiarse en tiempo de ejecuci&#243;n usando el comando SET. Ver el enlace para ver mas sobre variables de sistema del servidor:</p>

<p><a href="http://dev.mysql.com/doc/refman/5.0/es/server-system-variables.html">manual server system variables</a></p>

<p>Tambi&#233;n hay variables de estado del servidor. Estos existen en las conexiones, y se puede actualizarlas en el archivo de configuraci&#243;n <strong>my.cnf</strong> 	Normalmente puedes ver el estado de estas variables utilizando el sentencia <strong>SHOW STATUS.</strong> Por ejemplo, el valor contra el nombre Select_full_join muestra el n&#250;mero de Full-joins que no utilizan &#237;ndices. Si ves aqu&#237; un alto valor indica la necesidad de hacer una mejor indexaci&#243;n de las tablas correspondientes. Ver el enlace para ver el manual sobre variables de estado del servidor:</p>

<p><a href="http://dev.mysql.com/doc/refman/5.0/es/server-status-variables.html"> Manual server-status-variables<br />
</a>		</p>

<p>Por cierto, aqu&#237; hay un enlace que da 10 variables de MySql que debes controlar.<br />
<a href="http://blogs.techrepublic.com.com/opensource/?p=56">techrepublic link</a>  (en ingles)</p>

<p>Las diez variables en el enlace anterior son:</p>

<p><strong>Threads_connected</strong>  -- El n&#250;mero de conexiones abiertas actualmente. Esto puede ayudar en el an&#225;lisis del tr&#225;fico o de decidir el mejor momento para un servidor de volver a empezar.</p>

<p><strong><br />
Created_tmp_disk_tables</strong> -- El n&#250;mero de tablas temporales en disco creadas autom&#225;ticamente por el servidor mientras ejecutaba sentencias. Acceso a tablas en disco es generalmente m&#225;s lento que el acceso a las mismas tablas en la memoria. Por lo tanto, las consultas que utilizan la sintaxis CREATE TEMPORARY TABLE puedan ser lento cuando este valor es alto.</p>

<p><strong>Handler_read_first</strong> -- El n&#250;mero de veces que se lee la primera entrada de un &#237;ndice. Si MySQL haga con frecuencia el acceso a la primera fila de una tabla de &#237;ndice, sugiere que se trata de realizar un escaneo secuencial de todo el &#237;ndice. Esto indica que la tabla correspondiente no ha sido debidamente indizados.</p>

<p><strong>Innodb_buffer_pool_wait_free</strong> -- Normalmente, las escrituras al buffer de InnoDB se llevan acabo en segundo plano. A&#250;n as&#237;, si es necesario leer o crear una p&#225;gina y no existe ninguna p&#225;gina vac&#237;a disponible, entonces es tambi&#233;n necesario esperar a que las p&#225;ginas sean volcadas previamente. Este contador cuenta las instancias de estas esperas. Si el tama&#241;o del buffer ha sido establecido correctamente, este valor deber&#237;a ser peque&#241;o.</p>

<p><strong>Key_reads</strong> -- El n&#250;mero de lecturas f&#237;sicas de un bloque de claves desde disco. Si Key_reads es grande, entonces el valor de key_buffer_size es, probablemente, demasiado peque&#241;o. </p>

<p><strong>Max_used_connections</strong> -- El n&#250;mero m&#225;ximo de conexiones que han sido utilizadas simult&#225;neamente desde que el servidor ha sido iniciado. Este valor ofrece un punto de referencia para ayudarle a decidir el n&#250;mero m&#225;ximo de conexiones de su servidor debe apoyar.</p>

<p><strong>Open_tables</strong> -- El n&#250;mero de tablas que han sido abiertas. Si Opened_tables es grande, probablemente el valor de table_cache es demasiado peque&#241;o. </p>

<p><strong>Select_full_join</strong> -- El n&#250;mero de joins que no utilizan &#237;ndices. Si este valor no es 0, deber&#237;a comprobar cuidadosamente los &#237;ndices de sus tablas.</p>

<p><strong>Slow_queries</strong> -- El n&#250;mero de consultas que han tardado m&#225;s de long_query_time segundos. Un valor alto indica que el n&#250;mero de consultas no se ejecuta &#243;ptimamente. Un siguiente paso necesario ser&#237;a examinar el log de consultas lentas e identificar estas consultas para la optimizaci&#243;n.</p>

<p><strong>Uptime</strong> -- El n&#250;mero de segundos que el servidor ha estado funcionando ininterrumpidamente<br />
	<br />
Recuerda que si est&#225;s buscando una variable espec&#237;fica a trav&#233;s de SHOW STATUS, siempre podri&#225;s utilizar la cl&#225;usula de LIKE por ejemplo:<br />
 </p>
<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">show status like 'max%';</span></code></td></tr>
</table></div>

<p>	<br />
Bueno, como ya he dicho, es s&#243;lo una breve entrada esta vez.</p>

<p>Vuelvo</p>

<p>Thanks,<br />
Mark</p><div class="item_footer"><p><small><a href="http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2009/05/02/mas-informacion-sobre-las-variables">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.oxfordtechnotes.co.uk/sqlblog/blog1.php/2009/05/02/mas-informacion-sobre-las-variables#comments</comments>
		</item>
			</channel>
</rss>

