jueves, 23 de agosto de 2012

Consulta a tabla pivot mysql

uff... tiempo sin escribir nada, hoy voy a hablar de un problema al hacer una consulta a una tabla pivot en mysql.

Imagen de la base de datos:


El problema radica al hacer una consulta simple en la tabla MercadoFruta, la cual guarda los precios de las frutas con fecha que se generan en algún mercado.

La idea era consultar que frutas se venden o vendieron en cualquier mercado.

Dado que la consulta implica tres tablas no tenia idea de como hacerlo :P
Después de mucho pensar encontre una manera que aunque no creo sea la mejor...  funciono! así que la explico a continuación para que cualquiera que pase por aca con un problema parecido lo solucione rápidamente :D

La Consulta fue la siguiente:


SELECT f2.fruNombre, m2.merNombre from Fruta f2 join Mercado m2 where f2.fruCodigo in (select fruCodigo from MercadoFruta mf where mf.merCodigo = m2.merCodigo ) order by m2.merNombre

explicación: la cosa es muy facil, primero hago un cross join con la tabla Fruta y Mercado (SELECT f2.fruNombre, m2.merNombre from Fruta f2 join Mercado),lo cual me da todas las posibilidades de mercado y fruta.
Luego puedo recorrer la tabla MercadoFruta filtrando primero los mercados y buscando en ellos dicha fruta.


Espero que le sea útil a alguien :D