MySQL - Consultas sql con filtros multiples

   
Vista:

Consultas sql con filtros multiples

Publicado por Moises (1 intervención) el 06/06/2017 12:11:27
Buenos días

Llevo unos días con un problema que no consigo solucionar, si alguno le ha pasado y me recomienda como realizarlo se lo agradezco.

Lo que necesito conseguir es listar los "filtros de productos" de una tienda que cumplan los filtros de búsqueda elegidos por los clientes.. sumando todos ellos, sin limite.. igual que la web de https://www.pccomponentes.com/tablets el cliente va eligiendo los filtros : marcas, almacenamiento, mermoria y según vas pulsando los filtros solo muestran los que tienen productos activos.. desactivando el resto.

Por ejemplo: Quiero listar > "tablet" > con memorias " 2Gb RAM" y de "4Gb RAM" y procesador de 1.2MHz

TABLAS:

Tengo 3 tablas:

- Filtros

campo 1 : id (numerico)
campo 2 : texto (string)

Ejem:
1 - Memoria
2 - Procesador
3 - Resolución
etc..

- Filtros valores

campo 1 : id (numerico)
campo 2 : texto (string)
campo 3 : id filtro (numerico)

Ejem:
1 - 2 Gb RAM - 1
2 - 4 Gb RAM - 1
3 - CPU 1.2MHz - 2
etc..


-Productos

campo 1 : idp (numerico)
campo 2 : nombre (string)
campo 3 : filtros valores (string: separado los valores "ID" de la tabla "filtros" por comas, puede tener diferentes valores cada producto)
campo 4: activo (numero = 1 activo / 0 = baja)

Ejem:

1 | CPU Intel 1.7 | 2 | 1
2 | Portatil ACER 1.7 8Gb | 1, 2 | 1
3 | Memoria 8Gb DDR | 1 | 1


En la consulta del campo "filtros" de productos es dónde no consigo que funcione, al tener varios valores separador por comas, por eso uso REGEXP. Si hago las siguientes SELECT no me da resultado:

select DISTINCT(f.id), f.txt, f.url,f.id_filtro from filtros_productos as f INNER JOIN tiendab2c_productos as p ON p.filtros REGEXP '[[:<:]]f.id[[:>:]]' WHERE p.activo='1' and f.id_filtro='3' order by f.txt ASC


¿Saben que hago mal?

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Consultas sql con filtros multiples

Publicado por Nicolas (40 intervenciones) el 14/06/2017 21:25:13
Hola Moises.
Porque no creas una tabla para almacenar los códigos de los productos y los filtros. Quita de la tabla productos el campo3.
Con eso y un par de JOIN'S creo que podras solucionarlo sin complicarte con las comas(,) en ese campo.

Por ejemplo:

-Productos_FiltrosValores

campo 1 : idp (numerico)
campo 2 : id (numerico)

Abrazo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad