<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Novacreations &#187; mysql</title>
	<atom:link href="http://www.novacreations.net/category/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.novacreations.net</link>
	<description>Desarollando Software</description>
	<lastBuildDate>Wed, 03 Mar 2010 17:52:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Manual para PHP y Oracle (PDF)</title>
		<link>http://www.novacreations.net/525-manual-para-php-y-oracle/</link>
		<comments>http://www.novacreations.net/525-manual-para-php-y-oracle/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 17:24:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Base de Datos]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[base]]></category>
		<category><![CDATA[manual]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.novacreations.net/?p=525</guid>
		<description><![CDATA[Nuestras aplicaciones en PHP usualmente se conectaran a servidores de base de datos Mysql. Sin embargo al elevar la complejidad de las mismas o al crear aplicaciones de porte empresarial será necesario interactuar con Oracle.
Aunque la lógica es semejante existen algunas cuestiones en la implementación que tenemos que considerar para crear aplicaciones eficientes, segurar y [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-500" title="php-logo-e1" src="http://www.novacreations.net/wp-content/uploads/2009/08/php-logo-e1.jpg" alt="php-logo-e1" width="150" height="97" />Nuestras aplicaciones en PHP usualmente se conectaran a servidores de base de datos Mysql. Sin embargo al elevar la complejidad de las mismas o al crear aplicaciones de porte empresarial será necesario interactuar con Oracle.</p>
<p>Aunque la lógica es semejante existen algunas cuestiones en la implementación que tenemos que considerar para crear aplicaciones eficientes, segurar y robustas.</p>
<p>Oracle pone a nuestra disposición &#8220;The Underground PHP and Oracle Manual&#8221;, Ebook escrito por Christopher Jones y  Alison Holloway que nos dará toda la información que necesitamos para ingresar al mundo de Oracle y PHP.</p>
<p><a href="http://www.oracle.com/technology/tech/php/pdf/underground-php-oracle-manual.pdf" target="_blank">http://www.oracle.com/technology/tech/php/pdf/underground-php-oracle-manual.pdf</a></p>
<p style="text-align: center;"><img class="size-full wp-image-526 alignnone" title="oraclelogo_small" src="http://www.novacreations.net/wp-content/uploads/2009/09/oraclelogo_small.gif" alt="oraclelogo_small" width="133" height="18" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.novacreations.net/525-manual-para-php-y-oracle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Data Warehousing empresarial con Mysql</title>
		<link>http://www.novacreations.net/523-data-warehousing-empresarial-con-mysql/</link>
		<comments>http://www.novacreations.net/523-data-warehousing-empresarial-con-mysql/#comments</comments>
		<pubDate>Mon, 07 Sep 2009 16:43:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Base de Datos]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[daa warehouse]]></category>
		<category><![CDATA[dara mart]]></category>
		<category><![CDATA[decisión]]></category>
		<category><![CDATA[información]]></category>
		<category><![CDATA[paper]]></category>

		<guid isPermaLink="false">http://www.novacreations.net/?p=523</guid>
		<description><![CDATA[Un Data Warehouse es una colección de datos de una organización que permite a los usuarios consultar información para conocer el estado de la misma y poder tomar decisiones.
MySQL nos ofrece en este paper las estrategias para utilizar esta base de datos como Dara Warehouse.
Enterprise Data Warehousing with MySQL en Google Docs
También lo puedes descargar [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-thumbnail wp-image-350" title="Mysql" src="http://www.novacreations.net/wp-content/uploads/2008/10/mysql-167x86.thumbnail.png" alt="Mysql" width="128" height="65" />Un Data Warehouse es una colección de datos de una organización que permite a los usuarios consultar información para conocer el estado de la misma y poder tomar decisiones.</p>
<p>MySQL nos ofrece en este paper las estrategias para utilizar esta base de datos como Dara Warehouse.</p>
<p><a href="http://docs.google.com/fileview?id=0B2oC_BCUOj13ZDA5NzUzMjUtMzQxOS00ZTk4LTg3M2QtMDc2N2VhMDgzMTFm&amp;hl=es" target="_blank">Enterprise Data Warehousing with MySQL en Google Docs</a></p>
<p>También lo puedes descargar después de generar una cuenta en el sitio de <a href="http://mysql.com/why-mysql/white-papers/mysql_wp_data_warehousing.php" target="_blank">MySQL White papers.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.novacreations.net/523-data-warehousing-empresarial-con-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Guía Visual para Instalar Mysql en Windows</title>
		<link>http://www.novacreations.net/508-guia-visual-para-instalar-mysql-en-windows/</link>
		<comments>http://www.novacreations.net/508-guia-visual-para-instalar-mysql-en-windows/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 16:28:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Base de Datos]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[guía]]></category>
		<category><![CDATA[instalación]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.novacreations.net/?p=508</guid>
		<description><![CDATA[MySQL nos ofrece una guía visual para instalar y configurar MySQL en Windows. Si es tu primera vez y quiere empezar a manejar esta excelente base de datos, revisa este documento.
Visual_Guide_to_Installing_MySQL_Windows.pdf en Google Docs
Lo puedes descargar después de generar una cuenta en el sitio de MySQL.
http://www.mysql.com/why-mysql/white-papers/visual_guide_to_installing_mysql_windows.php
]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-thumbnail wp-image-350" title="Mysql" src="http://www.novacreations.net/wp-content/uploads/2008/10/mysql-167x86.thumbnail.png" alt="Mysql" width="128" height="65" />MySQL nos ofrece una guía visual para instalar y configurar MySQL en Windows. Si es tu primera vez y quiere empezar a manejar esta excelente base de datos, revisa este documento.</p>
<p><a href="http://docs.google.com/fileview?id=0B2oC_BCUOj13NGVkN2E5MjQtMWFiYS00OWVjLTlhZGEtNjY2ODQ4NzdjNjQx&amp;hl=es" target="_blank">Visual_Guide_to_Installing_MySQL_Windows.pdf en Google Docs</a></p>
<p>Lo puedes descargar después de generar una cuenta en el sitio de MySQL.</p>
<p><a href="http://www.mysql.com/why-mysql/white-papers/visual_guide_to_installing_mysql_windows.php">http://www.mysql.com/why-mysql/white-papers/visual_guide_to_installing_mysql_windows.php</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.novacreations.net/508-guia-visual-para-instalar-mysql-en-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Esquema de base de datos para los tags (Palabras clave)</title>
		<link>http://www.novacreations.net/411-esquema-de-base-de-datos-para-los-tags-palabras-clave/</link>
		<comments>http://www.novacreations.net/411-esquema-de-base-de-datos-para-los-tags-palabras-clave/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 05:55:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Base de Datos]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[bd]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[tag]]></category>
		<category><![CDATA[tag map]]></category>
		<category><![CDATA[tags]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[web 2.0]]></category>

		<guid isPermaLink="false">http://www.novacreations.net/411-esquema-de-base-de-datos-para-los-tags-palabras-clave/</guid>
		<description><![CDATA[Los tags son palabras clave que carecen de jerarquía y son asignadas a una entidad para describirla. Estos metadatos facilitan la  búsqueda y exploración de estos recursos.
En un proyecto en el que me encuentro trabajando estoy por introducir un sistema de tags para asignar metadatos a una serie de recursos. El punto sobre el que [...]]]></description>
			<content:encoded><![CDATA[<p>Los <strong>tags </strong>son palabras clave que carecen de jerarquía y son asignadas a una entidad para describirla. Estos metadatos facilitan la  búsqueda y exploración de estos recursos.</p>
<p>En un proyecto en el que me encuentro trabajando estoy por introducir un sistema de tags para asignar metadatos a una serie de recursos. El punto sobre el que estoy trabajando es en la definición del esquema de la base de datos que me permita añadir tags de forma flexible logrando realizar búsquedas sobre esta información.</p>
<p>Un excelente recurso que encontré es la página de <em>Philipp Kelle</em>r en la cual nos plantea tres esquemas diferentes:</p>
<p>Solución “<strong>MySQLicious</strong>”. Una sola tabla sin normalizar. Implementación sencilla pero presenta limitantes en el número de tags a asignar.</p>
<p style="text-align: center"><img src="http://www.novacreations.net/wp-content/uploads/2009/03/mysqlicious_structure.png" alt="mysqlicious_structure.png" /></p>
<p>Solución “<strong>Scuttle</strong>”. Se presenta una tabla de categorías adicional. Presenta mejor normalización y flexible en cuanto al número de tags.</p>
<p style="text-align: center"><img src="http://www.novacreations.net/wp-content/uploads/2009/03/scuttle_structure.png" alt="scuttle_structure.png" /></p>
<p>Solución “<strong>Toxi</strong>”. Tres tablas en la cual cada tag tiene una relación N a M con las entidades.</p>
<p style="text-align: center"><img src="http://www.novacreations.net/wp-content/uploads/2009/03/toxi_structure.png" alt="toxi_structure.png" /></p>
<p>Philipp nos explica a detalle cada uno de estos esquemas y nos ofrece claros ejemplos de consultas que vamos a necesitar para las diferentes operaciones.</p>
<p><a href="http://www.pui.ch/phred/archives/2005/04/tags-database-schemas.html" target="_blank">http://www.pui.ch/phred/archives/2005/04/tags-database-schemas.html</a></p>
<p>También nos ofrece pruebas de rendimiento que nos ayudarán en la adopción del mejor esquema.</p>
<p><a href="http://www.pui.ch/phred/archives/2005/06/tagsystems-performance-tests.html" target="_blank">http://www.pui.ch/phred/archives/2005/06/tagsystems-performance-tests.html</a></p>
<p>Los<strong> tag clouds </strong>o nubes de tags son representaciones visuales de las palabras claves de un sitio. En mi investigación sobre recursos de tags me encontré este sitio muy entretenido que te permite generar nubes de tags con interesantes diseños ya sea de un texto o una página. Genera muy buenos resultados.</p>
<p><a href="http://www.wordle.net/" target="_blank">http://www.wordle.net/</a><br />
Me ayudo a generar el siguiente tag cloud de la Canción de las Noches Perdidas de Joaquin Sabina.</p>
<p style="text-align: center">&nbsp;</p>
<p style="text-align: center"><img src="http://farm4.static.flickr.com/3613/3368573479_2048608760.jpg" width="500" height="293" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.novacreations.net/411-esquema-de-base-de-datos-para-los-tags-palabras-clave/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mysql: Modificador ROLLUP para consultas agregadas</title>
		<link>http://www.novacreations.net/406-mysql-modificador-rollup-para-consultas-agregadas/</link>
		<comments>http://www.novacreations.net/406-mysql-modificador-rollup-para-consultas-agregadas/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 00:32:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Artículos]]></category>
		<category><![CDATA[Base de Datos]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[bd]]></category>
		<category><![CDATA[groupby]]></category>
		<category><![CDATA[rollup]]></category>

		<guid isPermaLink="false">http://www.novacreations.net/406-mysql-modificador-rollup-para-consultas-agregadas/</guid>
		<description><![CDATA[MySQL cuenta con un modificador para las consultas agregadas (Group by) que nos puede resultar muy útil en la generación de nuestros reportes. El modificador ROLLUP añade algunas filas adicionales a los resultados generados. Estas filas representan operaciones de agregación de mayor nivel, es decir que nos permite agregar los resultados ya agregados.
Por ejemplo, digamos [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.novacreations.net/wp-content/uploads/2008/10/mysql-167x86.png" alt="Mysql" align="right" />MySQL cuenta con un modificador para las consultas agregadas (Group by) que nos puede resultar muy útil en la generación de nuestros reportes. El modificador <strong>ROLLUP </strong>añade algunas filas adicionales a los resultados generados. Estas filas representan operaciones de agregación de mayor nivel, es decir que nos permite agregar los resultados ya agregados.</p>
<p>Por ejemplo, digamos que tenemos una tabla con la siguiente estructura:</p>
<p><img src="http://www.novacreations.net/wp-content/uploads/2009/03/tabla1.png" alt="tabla1.png" /></p>
<p>Si ejecutamos un Query agregado, por ejemplo<br />
<code>select categoria, sum(ventas) from tabla Group by categoria</code></p>
<p>Nos arroja el siguiente resultado que es la suma de todas las ventas por categoría de producto.</p>
<p><img src="http://www.novacreations.net/wp-content/uploads/2009/03/tabla2a.png" alt="tabla2a.png" /></p>
<p>Al añadir el <strong>ROLLUP </strong>MySQL agrega una fila con la sumatoria total de todas las categorías.</p>
<p><code>select categoria, sum(ventas) from tabla Group by categoria with rollup</code></p>
<p><img src="http://www.novacreations.net/wp-content/uploads/2009/03/tabla2.png" alt="tabla2.png" /></p>
<p>Al añadir mas columnas al group by y  cuando existe un cambio de valor, la consulta  regresa una fila adicional con los valores agregados. Por ejemplo en nuestra consulta anterior podemos solicitar que nos regrese el valor de la sumatoria por país.</p>
<p><code>select pais,categoria, sum(ventas) from tabla Group by pais,categoria</code></p>
<p><img src="http://www.novacreations.net/wp-content/uploads/2009/03/tabla3.png" alt="tabla3.png" /><br />
Esta función resulta muy útil al momento de efectuar reportes o al ser incorporada en Procesamiento Analítico de datos.<br />
Revisa la documentación para conocer mas detalles y ejemplos de esta función.</p>
<p><a href="http://dev.mysql.com/doc/refman/5.0/es/group-by-modifiers.html" target="_blank">http://dev.mysql.com/doc/refman/5.0/es/group-by-modifiers.html </a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.novacreations.net/406-mysql-modificador-rollup-para-consultas-agregadas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mysql: Analizando y Optimizando las  propiedades de las columnas</title>
		<link>http://www.novacreations.net/375-mysql-analizando-y-optimizando-las-propiedades-de-las-columnas/</link>
		<comments>http://www.novacreations.net/375-mysql-analizando-y-optimizando-las-propiedades-de-las-columnas/#comments</comments>
		<pubDate>Wed, 07 Jan 2009 16:00:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Artículos]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[ANALYSE]]></category>
		<category><![CDATA[optimización]]></category>
		<category><![CDATA[procedure]]></category>
		<category><![CDATA[query]]></category>

		<guid isPermaLink="false">http://www.novacreations.net/375-mysql-analizando-y-optimizando-las-propiedades-de-las-columnas/</guid>
		<description><![CDATA[El éxito de una base de datos óptima en cuanto a espacio y procesamiento implica una correcta configuración y selección del tipo de dato que utilizan nuestras columnas. Por ejemplo si estamos almacenando la edad y utilizamos una columna de tipo int estamos desperdiciando 3 bytes que en un dato puede no parecer mucho, pero al momento de manejar millones de registros con miles de operaciones puede afectar de forma determinante el rendimiento de nuestra base de datos.]]></description>
			<content:encoded><![CDATA[<p>El éxito de una base de datos óptima en cuanto a espacio y procesamiento implica una correcta configuración y selección del tipo de dato que utilizan nuestras columnas. Por ejemplo si estamos almacenando la edad y utilizamos una columna de tipo int estamos desperdiciando 3 bytes que en un dato puede no parecer mucho, pero al momento de manejar millones de registros con miles de operaciones puede afectar de forma determinante el rendimiento de nuestra base de datos.</p>
<p>Es necesario conocer la forma en que MySQL almacena los datos para poder efectuar elecciones correctas acompañado de un estudio sobre el tipo de datos y entradas que nuestros usuarios estarán efectuando. Una vez sobre la marcha tenemos una herramienta integrada en MySQL muy útil que efectúa un análisis sobre nuestras columnas y nos ofrece una recomendación sobre el tipo de dato óptimo.</p>
<p>Esta es procedimiento que se llama <a href="http://dev.mysql.com/doc/refman/5.0/en/procedure-analyse.html" target="_blank">ANALYSE</a>() y lo podemos ejecutar de la siguiente forma:</p>
<p><code>select * from tabla PROCEDURE ANALYSE()</code></p>
<p style="text-align: center"><a href="http://www.novacreations.net/wp-content/uploads/2009/01/analyse.png" target="_blank"><img src="http://www.novacreations.net/wp-content/uploads/2009/01/analyse2.png" alt="analyse2.png" /></a></p>
<p>Nos arroja datos interesantes de nuestros datos como los valores y tamaños mínimos y máximos y al final vemos el tipo de dato recomendado. Es importante recordar que es solamente una recomendación y que antes de cambiar los tipos de datos de nuestras columnas tenemos que considerar otras variables como el crecimiento esperado de los datos y posibles nuevos requerimientos. Esta es solo una herramienta que nos permite encontrar errores y puntos de optimización en nuestros esquemas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novacreations.net/375-mysql-analizando-y-optimizando-las-propiedades-de-las-columnas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mysql: Agrupando resultados agregados.</title>
		<link>http://www.novacreations.net/370-mysql-agrupando-resultados-agregados/</link>
		<comments>http://www.novacreations.net/370-mysql-agrupando-resultados-agregados/#comments</comments>
		<pubDate>Mon, 05 Jan 2009 22:48:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Artículos]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[funciones]]></category>
		<category><![CDATA[group_concat]]></category>
		<category><![CDATA[query]]></category>
		<category><![CDATA[select]]></category>

		<guid isPermaLink="false">http://www.novacreations.net/370-mysql-agrupando-resultados-agregados/</guid>
		<description><![CDATA[MySQL cuenta con muchas funciones las cuales pueden ser muy útiles aunque son poco conocidas. Una de ellas es la función GROUP_CONCAT la cual te regresa un string con la concatenación de los valores resultantes de un agrupamiento.]]></description>
			<content:encoded><![CDATA[<p>MySQL cuenta con muchas funciones las cuales pueden ser muy útiles aunque son poco conocidas. Una de ellas es la función <a href="http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat" target="_blank">GROUP_CONCAT</a> la cual te regresa un string con la concatenación de los valores resultantes de un agrupamiento.</p>
<p>Por ejemplo, consideremos la siguiente tabla la cual contiene ciudades y el código del país al que pertenecen:</p>
<p><code>select * from ciudades</code></p>
<p style="text-align: center"><img src="http://www.novacreations.net/wp-content/uploads/2009/01/groupconcat_1.png" alt="groupconcat_1.png" /></p>
<p>Podemos agrupar la tabla por el código de país:</p>
<p><pre><code>select codigo_pais,count(*) as count_ciudades from ciudades group by codigo_pais
</code></pre></p>
<p style="text-align: center"><img src="http://www.novacreations.net/wp-content/uploads/2009/01/groupconcat_2.png" alt="groupconcat_2.png" /></p>
<p>El cual nos indica la cantidad de valores que han sido agrupados utilizando la columna codigo_pais.</p>
<p>Con la función GROUP_CONCAT podemos conocer todos los países que fueron agrupados:</p>
<p><code>select codigo_pais,&lt;strong&gt;group_concat&lt;/strong&gt;(ciudad) as ciudades from ciudad group by codigo_pais</code></p>
<p style="text-align: center"><img src="http://www.novacreations.net/wp-content/uploads/2009/01/groupconcat_3.png" alt="groupconcat_3.png" /></p>
<p>La cual nos muestra los resultados concatenados y separados por una coma.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novacreations.net/370-mysql-agrupando-resultados-agregados/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mysql: Funciones de agregación y de Control de Flujo</title>
		<link>http://www.novacreations.net/267-mysql-funciones-de-agregacion-y-de-flujo-de-control/</link>
		<comments>http://www.novacreations.net/267-mysql-funciones-de-agregacion-y-de-flujo-de-control/#comments</comments>
		<pubDate>Thu, 08 Nov 2007 15:00:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Artículos]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[query]]></category>

		<guid isPermaLink="false">http://www.novacreations.net/267-mysql-funciones-de-agregacion-y-de-flujo-de-control/</guid>
		<description><![CDATA[Este pequeño ejemplo nos permitirá usar dos herramientas, las funciones de agregación y las funciones condicionales, los que nos permitirá filtrar datos de una consulta agregada. Lo que vamos a obtener es el valor máximo de una serie de datos basándonos en una o más reglas. ]]></description>
			<content:encoded><![CDATA[<p><strong>Mysql </strong>como otros manejadores de base de datos nos ofrecen muchas herramientas y funciones que combinados nos dan gran flexibilidad y dinamismo en la manipulación de datos.</p>
<p>Este pequeño ejemplo nos permitirá usar dos herramientas, las <a href="http://dev.mysql.com/doc/refman/5.0/es/group-by-functions.html" target="_blank"><strong>funciones de agregación</strong></a> y las <a href="http://dev.mysql.com/doc/refman/5.0/es/control-flow-functions.html" target="_blank"><strong>funciones condicionales</strong></a>, los que nos permitirá filtrar datos de una consulta agregada. Lo que vamos a obtener es el valor máximo de una serie de datos basándonos en una o más reglas.</p>
<p style="text-align: center"><img src="http://www.novacreations.net/wp-content/uploads/2007/11/datos.JPG" alt="datos.JPG" /></p>
<p>Pongamos por ejemplo el anterior conjunto de datos. Representa una serie de tareas (A, B, C y D, definidas en la columna <em>nombre</em>) que constan de varios pasos (enumerados en la columna <em>paso</em>) para ser completadas. Cada tarea tiene diferente números de  pasos y cada paso representa un porcentaje diferente de terminación.</p>
<p>El valor porcentual acumulado de la tarea es representado en el campo <em>valor</em>. Podemos ver que la tarea D tiene 4 pasos, y al completarse cada paso se lleva terminado en un 20, 40, 65 y 100% respectivamente.</p>
<p>Marcamos en el <em>campo </em>bandera los pasos hemos terminado. Una vez terminado un <em>paso </em>marcamos la <em>bandera </em>con uno por lo que sabremos siempre en que paso estamos. Podemos ver en los datos de ejemplo que la tarea A esta en el paso 2 con 34% de terminación.</p>
<p>Ahora, lo que queremos obtener en <em>una sola consulta</em>, es  el porcentaje en el que todas las tareas se encuentran. Que seria el siguiente resultado.</p>
<p style="text-align: center"><img src="http://www.novacreations.net/wp-content/uploads/2007/11/final.JPG" alt="final.JPG" /></p>
<p>El primer paso es agregar todos los resultados. Lo que nos permitirá empezar a ejecutar operaciones sobre los datos.</p>
<p><code>select&nbsp;&nbsp;*&nbsp;&nbsp;from tabla&nbsp;&nbsp;group by nombre</code></p>
<p>Una primera consulta rápida podría ser:</p>
<p style="text-align: center"><img src="http://www.novacreations.net/wp-content/uploads/2007/11/resuladosnocorrectos.JPG" alt="resuladosnocorrectos.JPG" /></p>
<p align="center"><code>select nombre,&nbsp;&nbsp;max(valor)&nbsp;&nbsp; from tabla where bandera=1 group by nombre</code></p>
<p><pre><code>
</code></pre><br />
Sin embargo esta consulta <strong>no </strong>nos va a funcionar, por que va a  eliminar de la selección todos los resultados con banderas diferentes a 1, y si tenemos tareas como C en donde ninguna tarea esta terminada, estas tareas serán descartadas ya que los valores serán descartados. Podemos observarlo en la siguiente tabla:</p>
<p align="center"><img src="http://www.novacreations.net/wp-content/uploads/2007/11/resuladosnocorrectos2.JPG" alt="resuladosnocorrectos2.JPG" /></p>
<p align="center"><code>select nombre, valor&nbsp;&nbsp; from tabla where bandera=1 </code></p>
<p>Y usando:</p>
<p><code>select nombre,&nbsp;&nbsp;max(valor)&nbsp;&nbsp; from tabla group by nombre</code></p>
<p>Simplemente nos regresa los valores máximos de todas las tareas (100)</p>
<p>Tendremos que usar una <strong>condición </strong>en la expresión de las columnas para definir que solo tome en cuenta los valores de los pasos que ya fueron completados.</p>
<p>La<a href="http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#function_if" target="_blank"> función if</a> esta definida como:</p>
<p>IF(expr1,expr2,expr3)</p>
<p>En donde la expr1 es evaluada, y si es verdadera regresa la expr2, si es falsa regresa la expr3.</p>
<p>Entonces podemos decirle que evalué la columna <em>bandera</em>, y que si esta es 1, entonces nos regrese el <em>valor </em>original, y si es falso, regrese nulo, o 0, ya que es un valor que no consideraremos:</p>
<p><strong>if(bandera=1,valor,0)</strong></p>
<p>Lo que ejecutado sin la agrupación nos regresa lo siguiente:</p>
<p><code>select nombre,&nbsp;&nbsp;if(bandera=1,valor,0)&nbsp;&nbsp; from tabla</code></p>
<p style="text-align: center"><img src="http://www.novacreations.net/wp-content/uploads/2007/11/datos3.JPG" alt="datos3.JPG" /></p>
<p>Podemos apreciar que de esta forma,  ya fácilmente podemos obtener el valor máximo usando la función max, ya que han sido eliminados los valores de los pasos no completados</p>
<p><pre><code>select nombre,&nbsp;&nbsp;max(if(bandera=1,valor,0))&nbsp;&nbsp; from tabla
group by nombre</code></pre></p>
<p>Lo que nos regresa los valores que deseamos.</p>
<p style="text-align: center"><img src="http://www.novacreations.net/wp-content/uploads/2007/11/final.JPG" alt="final.JPG" /></p>
<p>Este es un ejemplo de las muchas cosas que se pueden hacer mezclando las diversas funciones que nos proporciona mysql.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novacreations.net/267-mysql-funciones-de-agregacion-y-de-flujo-de-control/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
