Tengo el siguiente problema:
Tengo una consulta que en su estructura principal me funciona super bien, yo le llamo la consulta basica:
Código MySQL:
Ver original
Ahoar os explico la construccion de las BD:
Tengo una BD de articulos, la cual contiene su id_interno y todos sus campos que pertenecen a las caracteristicas del articulo.
Tengo la BD de unidad_medida, que simplemnte enlaza con la tabla articulos, en la cual tengo definido simplemente un id_interno y una descripcion que corresponde a las unidades de medida.
Tengo la BD's de marcas, modelo y estado, que hacen exactamente lo mismo que la anterior.
El problema es cuando a la consulta le agrego la tabla de etiquetas_articulo, que es una tabla que contiene las etiquetas de los articulos. Esta tabla esta a su vez desglosada en la tabla etiquetas, que contiene el id_interno y la descripcion de las etiquetas, y en la tabla etiquetas_articulos, guardo el id de la tabla etiquetas mas el id del articulo. Pero cuando a dos o mas articulos le defino etiquetas, la consulta que les mencione me arroja por ejemplo el sigueinte resultado.
id_articulo nombre_articulo
1 ampolleta 12 volts
2 ampolleta 10 volts
3 ampolleta 15 volts
3 ampolleta 15 volts
Lo que sucede, y el porque me arroja esto es porque a los articulos 1 y 2, les defini una etiqueta, pero al 3 articulo no le defini etiqueta.
La consulta final seria esta:
Código MySQL:
Ver original
Si se dan cuenta, ahora le agregue las tablas etiqeta_articulo y etiquetas. Esta consulta es la que me devuelve los registros que mas arriba menciono.
Ahora averiguando y leyendo por ahi, pude encontrar esto que me podria solucionar el problema: Realizrlo con FULL OUTER JOIN
El problema es que MySQL al parecer no soporta FULL OUTER JOIN. Otra solucion, emular el FULL OUTER JOIN. Quedaria como:
Código MySQL:
Ver original
bodfam.descripcion AS familia, bum.descripcion AS unidad_medida, bodmar.descripcion AS marca, bodmod.descripcion AS modelo, bodart.* FROM bdsistema.bodega_articulo bodart bodfam.descripcion AS familia, bum.descripcion AS unidad_medida, bodmar.descripcion AS marca, bodmod.descripcion AS modelo, bodart.* bdsistema.bodega_articulo bodart LEFT
El problema hasta aqui, solucionado, pero cuando se me complica, es cuando a la consulta le agrego los parametros de busqueda o de filtrado de datos con la condicion WHERE, porque si quiero filtrar, por ejemplo, por todas las ampolletas en que cuya etiqueta sea "carroceria", deberia mostrarme dos articulos, pero al momento de agregarlos a la consulta, solo me muestra el articulo que no tiene etiquetas. Por ejemplo asi:
Código MySQL:
Ver original
bodfam.descripcion AS familia, bum.descripcion AS unidad_medida, bodmar.descripcion AS marca, bodmod.descripcion AS modelo, bodart.* FROM bdsistema.bodega_articulo bodart bodfam.descripcion AS familia, bum.descripcion AS unidad_medida, bodmar.descripcion AS marca, bodmod.descripcion AS modelo, bodart.* bdsistema.bodega_articulo bodart LEFT
Si se fijan, ambas consultas tienenla condicion where, pero la consulta me arroja solo el articulo que no tiene etiquetas asociadas. Alguien me podria dar in consejo aunque fuera sencillo de como lo podria hacer para que me muestre aquellos articulos de lo cuales estoy buscando por su etiqueta ?
Saludos.
editado PD: al publicar este problema me di cuenta que el titulo es incorrceto, espero me disculpen.