<?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>Sentido Web &#187; MYSQL</title>
	<atom:link href="http://sentidoweb.com/category/mysql/feed" rel="self" type="application/rss+xml" />
	<link>http://sentidoweb.com</link>
	<description>Desarrollo web, HTML, CSS, Javascript, PHP, MySQL</description>
	<lastBuildDate>Tue, 10 Apr 2012 01:02:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Hacer un split en MySQL</title>
		<link>http://sentidoweb.com/2011/04/05/hacer-un-split-en-mysql.php</link>
		<comments>http://sentidoweb.com/2011/04/05/hacer-un-split-en-mysql.php#comments</comments>
		<pubDate>Tue, 05 Apr 2011 11:35:20 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[MYSQL]]></category>
		<category><![CDATA[split]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/?p=2711</guid>
		<description><![CDATA[Normalmente no se suelen necesitar hacer splits en MySQL, porque un buen diseño de la BD debería almacenar los campos en distintas columnas, y si no se puede realizar así, se suele guardar la información serializada en PHP o en formato JSON o XML. Pero no siempre son las cosas como queremos y alguna vez [...]]]></description>
			<content:encoded><![CDATA[<p>Normalmente no se suelen necesitar hacer splits en MySQL, porque un buen diseño de la BD debería almacenar los campos en distintas columnas, y si no se puede realizar así, se suele guardar la información serializada en PHP o en formato JSON o XML. Pero no siempre son las cosas como queremos y alguna vez nos podemos encontrar con la necesidad de hacer un split de un campo en MySQL (como me ha pasado a mi ahora).</p>
<p>Hacerlo es fácil, solo es necesario hacer dos substrings, por cada campo:</p>
<pre><code><pre class="sql"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #ff0000;">`ip`</span> ,
SUBSTRING_INDEX<span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">`ip`</span> , <span style="color: #ff0000;">'.'</span>, <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> a,
SUBSTRING_INDEX<span style="color: #66cc66;">&#40;</span>SUBSTRING_INDEX<span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">`ip`</span> , <span style="color: #ff0000;">'.'</span>, <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">&#41;</span>,<span style="color: #ff0000;">'.'</span>,-<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> b,
SUBSTRING_INDEX<span style="color: #66cc66;">&#40;</span>SUBSTRING_INDEX<span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">`ip`</span> , <span style="color: #ff0000;">'.'</span>, -<span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">&#41;</span>,<span style="color: #ff0000;">'.'</span>,<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> c,
SUBSTRING_INDEX<span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">`ip`</span> , <span style="color: #ff0000;">'.'</span>, -<span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> d
<span style="color: #993333; font-weight: bold;">FROM</span> log_table</pre></code></pre>
<p><a href="http://dev.mysql.com/doc/refman/5.1/en/string-functions.html">MySQL String Functions</a></p>]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2011/04/05/hacer-un-split-en-mysql.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>INSERT IGNORE en MySQL</title>
		<link>http://sentidoweb.com/2010/03/12/insert-ignore-en-mysql.php</link>
		<comments>http://sentidoweb.com/2010/03/12/insert-ignore-en-mysql.php#comments</comments>
		<pubDate>Fri, 12 Mar 2010 09:01:08 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[MYSQL]]></category>
		<category><![CDATA[Quicklinks]]></category>
		<category><![CDATA[ignore]]></category>
		<category><![CDATA[insert]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/?p=2222</guid>
		<description><![CDATA[Muchas veces realizamos inserts y nuestras comprobaciones son erróneas e intentamos insertar registros duplicados, dándonos un error gordo en MySQL. Para evitar esto, normalmente se usa un REPLACE cuando la situación permite reemplazar los valores nuevos por los actuales, pero cuando esto no es posible, nos tenemos que pegar con el código buscando la comprobación [...]]]></description>
			<content:encoded><![CDATA[<p>Muchas veces realizamos inserts y nuestras comprobaciones son erróneas e intentamos insertar registros duplicados, dándonos un error gordo en MySQL. Para evitar esto, normalmente se usa un REPLACE cuando la situación permite reemplazar los valores nuevos por los actuales, pero cuando esto no es posible, nos tenemos que pegar con el código buscando la comprobación que no hacemos correctamente. Para evitar esto: insertar algo ya existente, MySQL ofrece la posibilidad de ignorar el insert cuando no se puede insertar:</p>
<pre><code><pre class="sql"><span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">IGNORE</span> 
  <span style="color: #993333; font-weight: bold;">INTO</span> tabla 
    <span style="color: #66cc66;">&#40;</span>id, valor, ...<span style="color: #66cc66;">&#41;</span> 
  <span style="color: #993333; font-weight: bold;">VALUES</span> 
    <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">25</span>, <span style="color: #ff0000;">'valor, ...) </span></pre></code></pre>
<p>Cada día aprendo algo nuevo, aunque a veces deberían darme con la Biblia de MySQL (775 páginas) en la cabeza por no conocer antes esto.</p>]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2010/03/12/insert-ignore-en-mysql.php/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>BigDump: facilita recuperar dumps de MySQL grandes</title>
		<link>http://sentidoweb.com/2010/02/05/bigdump-facilita-recuperar-dumps-de-mysql-grandes.php</link>
		<comments>http://sentidoweb.com/2010/02/05/bigdump-facilita-recuperar-dumps-de-mysql-grandes.php#comments</comments>
		<pubDate>Fri, 05 Feb 2010 17:03:13 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[MYSQL]]></category>
		<category><![CDATA[Quicklinks]]></category>
		<category><![CDATA[bachup]]></category>
		<category><![CDATA[dump]]></category>
		<category><![CDATA[restore]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/?p=2168</guid>
		<description><![CDATA[A veces es un lío enorme recuperar BDs obtenidos de dumps cuando el fichero es enorme, sobre todo si usamos phpMyAdmin (y no tenemos acceso a él). Por ello este script nos puede venir muy bien para recuperar backups anteriores, ya que recupera de poco en poco y se auto-reinicia él mismo. BigDump]]></description>
			<content:encoded><![CDATA[<p>A veces es un lío enorme recuperar BDs obtenidos de dumps cuando el fichero es enorme, sobre todo si usamos phpMyAdmin (y no tenemos acceso a él). Por ello este script nos puede venir muy bien para recuperar backups anteriores, ya que recupera de poco en poco y se auto-reinicia él mismo.</p>
<p><a href="http://www.ozerov.de/bigdump.php">BigDump</a></p>]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2010/02/05/bigdump-facilita-recuperar-dumps-de-mysql-grandes.php/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MySQL 5.5 Milestone 2</title>
		<link>http://sentidoweb.com/2009/12/16/mysql-5-5-milestone-2.php</link>
		<comments>http://sentidoweb.com/2009/12/16/mysql-5-5-milestone-2.php#comments</comments>
		<pubDate>Wed, 16 Dec 2009 09:38:35 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[MYSQL]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/2009/12/16/mysql-5-5-milestone-2.php</guid>
		<description><![CDATA[MySQL ha sacado la primera versión Milestone (o RC) de la 5.5, la cual trae algunas novedades interesantes: Replicación semisíncrona: la cual se asegura de que al menos un esclavo confirme la transacción, habrá que ver que tal es esto para el rendimiento. Nueva sentencia LOAD XML Particionamiento por rangos y listas, que por cierto, [...]]]></description>
			<content:encoded><![CDATA[<p>MySQL ha sacado la primera versión Milestone (o RC) de la 5.5, la cual trae algunas novedades interesantes:</p>
<ul><li><a href="http://dev.mysql.com/doc/refman/5.5/en/replication-semisync.html">Replicación semisíncrona</a>: la cual se asegura de que al menos un esclavo confirme la transacción, habrá que ver que tal es esto para el rendimiento.</li>
<li>Nueva sentencia <a href="http://dev.mysql.com/doc/refman/5.5/en/load-xml.html">LOAD XML</a></li>
<li>Particionamiento por  <a title="RANGE Partitioning" href="http://dev.mysql.com/doc/refman/5.5/en/partitioning-range.html">rangos</a> y <a title="LIST Partitioning" href="http://dev.mysql.com/doc/refman/5.5/en/partitioning-list.html">listas</a>, que por cierto, yo desconocía que la versión Community de MySQL admitía particionamiento.</li>
<li>Versión mejorada del <a href="http://dev.mysql.com/doc/refman/5.5/en/innodb.html">plugin de InnoDB</a></li></ul>
<p><a href="http://dev.mysql.com/doc/refman/5.5/en/mysql-nutshell.html">What is new in MySQL 5.5</a></p>]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2009/12/16/mysql-5-5-milestone-2.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Consejos para MySQL</title>
		<link>http://sentidoweb.com/2009/11/26/consejos-para-mysql.php</link>
		<comments>http://sentidoweb.com/2009/11/26/consejos-para-mysql.php#comments</comments>
		<pubDate>Thu, 26 Nov 2009 17:12:55 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[MYSQL]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/2009/11/26/consejos-para-mysql.php</guid>
		<description><![CDATA[Una serie de consejos bastante útiles para usar en MySQL, algunos ya conocidos y otros no tanto: Optimiza tus queries para la caché: por ejemplo es preferible crear una condición en el WHERE que sea fecha>&#8217;$fecha&#8217; que fecha>now(), ya que indicando que fecha exáctamente, si la query se vuelve a ejecutar puede ser rescatada de [...]]]></description>
			<content:encoded><![CDATA[<p>Una serie de consejos bastante útiles para usar en MySQL, algunos ya conocidos y otros no tanto:</p>
<ul><li><strong>Optimiza tus queries para la caché</strong>: por ejemplo es preferible crear una condición en el <em>WHERE</em> que sea <em>fecha>&#8217;$fecha&#8217;</em> que <em>fecha>now()</em>, ya que indicando que fecha exáctamente, si la query se vuelve a ejecutar puede ser rescatada de la cache.</li>
<li><strong>Usa mismo tipo de campos para las <em>JOINs</em></strong>: si los campos son de distinto tipo en las tablas, al hacer el join MySQL no es capaz de usar uno de los índices (suponiendo que estén indexados, claro).</li>
<li><strong>No uses <em>ORDER BY RAND()</em></strong>: es preferible obtener una lista de ids aleatorios mediante código y luego obtener los registros por esos IDs.</li>
<li><strong>Evita <em>SELECT *</em></strong>: cuantos más campos leas, más información recuperas y más lentas serán las queries.</li>
<li><strong>Usa <em>ENUM</em> en vez de <em>VARCHAR</em></strong>: cuando uses un campo para un número limitado de strings es preferible usar ENUM ya que internamente se usa un tinyint.</li>
<li><strong>Utiliza <a href="http://dev.mysql.com/doc/refman/5.0/en/procedure-analyse.html">PROCEDURE ANALYSE()</a></strong>: comprobará tu tabla y te recomendará cambios para mejorar su optimización.</li>
<li><strong>Usa campos de longitud fija</strong>: hará que la tabla sea más rápida.</li></ul>
<p>Más consejos interesantes en el post original.</p>
<p><a href="http://net.tutsplus.com/tutorials/other/top-20-mysql-best-practices/">Top 20+ MySQL Best Practices</a></p>
<p>Vía / <a href="http://youare.com/jlantunez/2009/11/25/3182729">@jlantunez</a></p>]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2009/11/26/consejos-para-mysql.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OQGraph: motor MySQL que permite jerarquías</title>
		<link>http://sentidoweb.com/2009/11/06/oqgraph-motor-mysql-que-permite-jerarquias.php</link>
		<comments>http://sentidoweb.com/2009/11/06/oqgraph-motor-mysql-que-permite-jerarquias.php#comments</comments>
		<pubDate>Fri, 06 Nov 2009 16:56:06 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[MYSQL]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/2009/11/06/oqgraph-motor-mysql-que-permite-jerarquias.php</guid>
		<description><![CDATA[Open Query Graph (OQGraph) es un plugin para MySQL, MariaDB y Drizzle que permite trabajar con jerarquías o grafos en nuestra BD. Acaba de ser sacada a la luz, pero puede sernos muy útil para desarrollos de redes sociales: cada nodo del grafo es un usuario. También podríamos utilizarlo para estructuras jerarquizadas: padre, hijos, nietos, [...]]]></description>
			<content:encoded><![CDATA[<p>Open Query Graph (OQGraph) es un plugin para MySQL, MariaDB y Drizzle que permite trabajar con jerarquías o grafos en nuestra BD.</p>
<p>Acaba de ser sacada a la luz, pero puede sernos muy útil para desarrollos de redes sociales: cada nodo del grafo es un usuario. También podríamos utilizarlo para estructuras jerarquizadas: padre, hijos, nietos, &#8230;</p>
<p><a href="http://openquery.com/products/graph-engine">OQGraph</a></p>
<p>Vía / <a href="http://www.phpfreaks.com/blog/mysql-university-graph-computation-engine-for-mysql">PHP Freaks</a></p>]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2009/11/06/oqgraph-motor-mysql-que-permite-jerarquias.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Guía de escalamiento y replicación en MySQL</title>
		<link>http://sentidoweb.com/2009/08/10/guia-de-escalamiento-y-replicacion-en-mysql.php</link>
		<comments>http://sentidoweb.com/2009/08/10/guia-de-escalamiento-y-replicacion-en-mysql.php#comments</comments>
		<pubDate>Mon, 10 Aug 2009 17:15:00 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[MYSQL]]></category>
		<category><![CDATA[cluster]]></category>
		<category><![CDATA[escalamiento]]></category>
		<category><![CDATA[replicación]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/2009/08/10/guia-de-escalamiento-y-replicacion-en-mysql.php</guid>
		<description><![CDATA[La gente de Sun ha publicado una guía muy interesante sobre escalamiento y replicación para MySQL. Se trata de un PDF que nos explica qué es el escalamiento, la replicación en MySQL, los tipos de escalamiento, el Linux Heartbeat y los cluster, entre otras cosas. Guía: Escalamiento de MySQL para negocios de alto crecimiento Gracias [...]]]></description>
			<content:encoded><![CDATA[La gente de Sun ha publicado una guía muy interesante sobre escalamiento y replicación para MySQL. Se trata de un <a href="http://mx.sun.com/offers/docs/MySQL_Scale_ESP.pdf">PDF</a> que nos explica qué es el escalamiento, la replicación en MySQL, los tipos de escalamiento, el Linux Heartbeat y los cluster, entre otras cosas.
<a href="http://www.espaciolinux.com/2009/08/guia-escalamiento-mysql-para-negocios-alto-crecimiento/">Guía: Escalamiento de MySQL para negocios de alto crecimiento</a>
Gracias <a href="http://dmnet.bitacoras.com">David</a> por el aviso
]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2009/08/10/guia-de-escalamiento-y-replicacion-en-mysql.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>phpMyBackupPro: realiza backups de MySQL</title>
		<link>http://sentidoweb.com/2009/08/04/phpmybackuppro-realiza-backups-de-mysql.php</link>
		<comments>http://sentidoweb.com/2009/08/04/phpmybackuppro-realiza-backups-de-mysql.php#comments</comments>
		<pubDate>Wed, 05 Aug 2009 01:00:00 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[MYSQL]]></category>
		<category><![CDATA[backups]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/2009/08/04/phpmybackuppro-realiza-backups-de-mysql.php</guid>
		<description><![CDATA[phpMyBackupPro es un sistema que nos permite controlar las backups de nuestra BD MySQL de forma sencilla. Entre las características que ofrece nos encontramos con: Backups de una o varias BD con datos, sin datos, estrutura de las tablas, &#8230; Tres tipos de comprensión: sin comprensión, gzip o zip Backups programables Administración de backups que [...]]]></description>
			<content:encoded><![CDATA[<p><strong>phpMyBackupPro</strong> es un sistema que nos permite controlar las backups de nuestra BD MySQL de forma sencilla.</p>
<p>Entre las características que ofrece nos encontramos con:</p>
<ul><li>Backups de una o varias BD con datos, sin datos, estrutura de las tablas, &#8230;</li>
<li>Tres tipos de comprensión: sin comprensión, gzip o zip</li>
<li>Backups programables</li>
<li>Administración de backups que permite verlas, recuperarlas, descargarlas o borrarlas</li>
<li>Backup en servidor FTP o envío por email</li>
<li>Modo shell</li></ul>
<p><a href="http://www.phpmybackuppro.net/">phpMyBackupPro</a></p>
<p>Vía / <a href="http://www.weblenium.com/2009/07/phpmybackuppro-automated-mysql-backups/">Weblenium</a></p>
]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2009/08/04/phpmybackuppro-realiza-backups-de-mysql.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mostrar el tiempo transcurrido con MySQL</title>
		<link>http://sentidoweb.com/2009/06/10/mostrar-el-tiempo-transcurrido-con-mysql.php</link>
		<comments>http://sentidoweb.com/2009/06/10/mostrar-el-tiempo-transcurrido-con-mysql.php#comments</comments>
		<pubDate>Wed, 10 Jun 2009 20:00:00 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[MYSQL]]></category>
		<category><![CDATA[fechas]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/2009/06/10/mostrar-el-tiempo-transcurrido-con-mysql.php</guid>
		<description><![CDATA[Algo muy común a la hora de realizar una aplicación web es indicar las fechas según el tiempo transcurrido, en vez de poner 2009-06-03 poner &#8220;hace 7 días&#8221;. Para aquellos que necesiten mostrar las fechas de esta forma usando MySQL es posible hacerlo usando una función: DELIMITER // CREATE FUNCTION TimeDiffUnits &#40;old DATETIME, new DATETIME&#41; [...]]]></description>
			<content:encoded><![CDATA[<p>Algo muy común a la hora de realizar una aplicación web es indicar las fechas según el tiempo transcurrido, en vez de poner 2009-06-03 poner &#8220;hace 7 días&#8221;.</p>
<p>Para aquellos que necesiten mostrar las fechas de esta forma usando MySQL es posible hacerlo usando una función:</p>
<pre><code><pre class="sql">DELIMITER //
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">FUNCTION</span> TimeDiffUnits <span style="color: #66cc66;">&#40;</span>old DATETIME, new DATETIME<span style="color: #66cc66;">&#41;</span> RETURNS CHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">50</span><span style="color: #66cc66;">&#41;</span> DETERMINISTIC NO SQL
BEGIN
DECLARE diff INTEGER;
<span style="color: #993333; font-weight: bold;">SET</span> diff = UNIX_TIMESTAMP<span style="color: #66cc66;">&#40;</span>new<span style="color: #66cc66;">&#41;</span> - UNIX_TIMESTAMP<span style="color: #66cc66;">&#40;</span>old<span style="color: #66cc66;">&#41;</span>;
CASE
WHEN <span style="color: #66cc66;">&#40;</span>diff &lt; <span style="color: #cc66cc;">3600</span><span style="color: #66cc66;">&#41;</span> THEN
<span style="color: #993333; font-weight: bold;">RETURN</span> CONCAT<span style="color: #66cc66;">&#40;</span>FLOOR<span style="color: #66cc66;">&#40;</span>diff / <span style="color: #cc66cc;">60</span><span style="color: #66cc66;">&#41;</span> , <span style="color: #ff0000;">' Minutes'</span><span style="color: #66cc66;">&#41;</span>;
WHEN <span style="color: #66cc66;">&#40;</span>diff &lt; <span style="color: #cc66cc;">86400</span><span style="color: #66cc66;">&#41;</span> THEN
<span style="color: #993333; font-weight: bold;">RETURN</span> CONCAT<span style="color: #66cc66;">&#40;</span>FLOOR<span style="color: #66cc66;">&#40;</span>diff / <span style="color: #cc66cc;">3600</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #ff0000;">' Hours'</span><span style="color: #66cc66;">&#41;</span>;
WHEN <span style="color: #66cc66;">&#40;</span>diff &lt; <span style="color: #cc66cc;">604800</span><span style="color: #66cc66;">&#41;</span> THEN
<span style="color: #993333; font-weight: bold;">RETURN</span> CONCAT<span style="color: #66cc66;">&#40;</span>FLOOR<span style="color: #66cc66;">&#40;</span>diff / <span style="color: #cc66cc;">86400</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #ff0000;">' Days'</span><span style="color: #66cc66;">&#41;</span>;
WHEN <span style="color: #66cc66;">&#40;</span>diff &lt; <span style="color: #cc66cc;">2592000</span><span style="color: #66cc66;">&#41;</span> THEN
<span style="color: #993333; font-weight: bold;">RETURN</span> CONCAT<span style="color: #66cc66;">&#40;</span>FLOOR<span style="color: #66cc66;">&#40;</span>diff / <span style="color: #cc66cc;">604800</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #ff0000;">' Weeks'</span><span style="color: #66cc66;">&#41;</span>;
WHEN <span style="color: #66cc66;">&#40;</span>diff &lt; <span style="color: #cc66cc;">31536000</span><span style="color: #66cc66;">&#41;</span> THEN
<span style="color: #993333; font-weight: bold;">RETURN</span> CONCAT<span style="color: #66cc66;">&#40;</span>FLOOR<span style="color: #66cc66;">&#40;</span>diff / <span style="color: #cc66cc;">2592000</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #ff0000;">' Months'</span><span style="color: #66cc66;">&#41;</span>;
ELSE
<span style="color: #993333; font-weight: bold;">RETURN</span> CONCAT<span style="color: #66cc66;">&#40;</span>FLOOR<span style="color: #66cc66;">&#40;</span>diff / <span style="color: #cc66cc;">31536000</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #ff0000;">' Years'</span><span style="color: #66cc66;">&#41;</span>;
END CASE;
END //
DELIMITER ;</pre></code></pre>
<p><strong>Importante</strong>: no uséis jamás está función ni en el WHERE ni en el ORDER BY ni en el GROUP BY, ya que se ejecutaría para cada registro de las tablas.</p>
<p><a href="http://www.mikehillyer.com/mysql/user-friendly-age-function-for-mysql/">User Friendly Age Function for MySQL</a></p>
]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2009/06/10/mostrar-el-tiempo-transcurrido-con-mysql.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comentarios anidados con PHP y MySQL</title>
		<link>http://sentidoweb.com/2009/06/03/comentarios-anidados-con-php-y-mysql.php</link>
		<comments>http://sentidoweb.com/2009/06/03/comentarios-anidados-con-php-y-mysql.php#comments</comments>
		<pubDate>Thu, 04 Jun 2009 01:30:00 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[AI/Usabilidad]]></category>
		<category><![CDATA[MYSQL]]></category>
		<category><![CDATA[comentarios]]></category>
		<category><![CDATA[comentarios anidados]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/2009/06/03/comentarios-anidados-con-php-y-mysql.php</guid>
		<description><![CDATA[Los comentarios anidados es algo muy común entre los foros o blogs. Realizarlo es bastante sencillo, aunque quizás hacerlo de la forma más eficiente puede tener su dificultad. En el post que referencio, nos explican paso a paso cómo hacerlo: estructura de la BD, formulario, consultas, &#8230; La solución es de las sencillas, se trata [...]]]></description>
			<content:encoded><![CDATA[Los comentarios anidados es algo muy común entre los foros o blogs. Realizarlo es bastante sencillo, aunque quizás hacerlo de la forma más eficiente puede tener su dificultad.
En el post que referencio, nos explican paso a paso cómo hacerlo: estructura de la BD, formulario, consultas, &#8230;
La solución es de las sencillas, se trata de que cada comentario tenga un campo que enlace con el comentario padre, y luego a la hora de recuperar los comentarios, hay que ir realizando consultas de obtención de comentarios por cada comentario padre, salvo en el primer caso que se buscan los comentarios iniciales.
<a href="http://ad1987.blogspot.com/2009/06/how-to-multi-level-comments-in-php.html">HOW-TO: Multi-level Comments In PHP</a>
]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2009/06/03/comentarios-anidados-con-php-y-mysql.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

