Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Criterios de busqueda

Estas en el tema de Criterios de busqueda en el foro de Mysql en Foros del Web. Hola a tod@s, Trataré de explicarme lo mejor que pueda. Tengo una tabla de Productos con clave primaria ID y otra tabla Propiedades con diferentes ...
  #1 (permalink)  
Antiguo 13/01/2009, 04:07
 
Fecha de Ingreso: enero-2009
Mensajes: 3
Antigüedad: 15 años, 3 meses
Puntos: 0
Criterios de busqueda

Hola a tod@s,

Trataré de explicarme lo mejor que pueda. Tengo una tabla de Productos con clave primaria ID y otra tabla Propiedades con

diferentes propiedades de dichos productos (una propiedad por cada fila) con una clave ajena a la tabla de productos.

P.ej: En la tabla de productos digamos que tengo el producto "Alfombra persa num 2" y en la tabla de Propiedades tendría

por ejemplo en diferentes filas su color, tamaño, estilo, etc

Mi objetivo es crear un formulario de busqueda que filtre los productos según los criterios de busqueda seleccionados por el usuario,

así por ejemplo puede darse que el usuario busque sólo por color, o por color y estilo a la vez.

Por desgracia no puedo cambiar la estructura de la base de datos ya que está me viene impuesta. Aunque he intentado crear la

query apropiada para filtrar por más de una propiedad no he conseguido ningún resultado.

Dejo un ejemplo de filtro de busqueda por un criterio (el cual funciona):

SELECT *
FROM productos p, propiedades prop
WHERE p.ID = prop.post_id
AND prop.key = "estilo"
AND prop.value = "Tradicional"
ORDER BY p.date DESC

Y otro que estoy intentando para dos pero que no funciona:

SELECT *
FROM productos p, propiedades prop
WHERE p.ID = prop.post_id
AND prop.key = "estilo"
AND prop.value = "Tradicional"
AND prop.key = "color"
AND prop.value = "rojo"
ORDER BY p.date DESC

Espero no haberme explicado horriblemente mal, un saludo y muchas gracias por adelantado.

javier.
  #2 (permalink)  
Antiguo 13/01/2009, 04:09
 
Fecha de Ingreso: enero-2009
Mensajes: 3
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Criterios de busqueda

Cita:
Iniciado por javierfaus Ver Mensaje
Hola a tod@s,

Trataré de explicarme lo mejor que pueda. Tengo una tabla de Productos con clave primaria ID y otra tabla Propiedades con

diferentes propiedades de dichos productos (una propiedad por cada fila) con una clave ajena a la tabla de productos.

P.ej: En la tabla de productos digamos que tengo el producto "Alfombra persa num 2" y en la tabla de Propiedades tendría

por ejemplo en diferentes filas su color, tamaño, estilo, etc

Mi objetivo es crear un formulario de busqueda que filtre los productos según los criterios de busqueda seleccionados por el usuario,

así por ejemplo puede darse que el usuario busque sólo por color, o por color y estilo a la vez.

Por desgracia no puedo cambiar la estructura de la base de datos ya que está me viene impuesta. Aunque he intentado crear la

query apropiada para filtrar por más de una propiedad no he conseguido ningún resultado.

Dejo un ejemplo de filtro de busqueda por un criterio (el cual funciona):

SELECT *
FROM productos p, propiedades prop
WHERE p.ID = prop.post_id
AND prop.key = "estilo"
AND prop.value = "Tradicional"
ORDER BY p.date DESC

Y otro que estoy intentando para dos pero que no funciona:

SELECT *
FROM productos p, propiedades prop
WHERE p.ID = prop.post_id
AND prop.key = "estilo"
AND prop.value = "Tradicional"
AND prop.key = "color"
AND prop.value = "rojo"
ORDER BY p.date DESC

Espero no haberme explicado horriblemente mal, un saludo y muchas gracias por adelantado.

javier.
Vaya perdón por el formateo del post anterior, debí haberlo previsualizado.
javier.
  #3 (permalink)  
Antiguo 13/01/2009, 10:02
 
Fecha de Ingreso: enero-2009
Mensajes: 3
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Criterios de busqueda

Hola otra vez,

Un ejemplo visual creo que puede servir mejor que "mis" palabras

PRODUCTOS
ID Nombre Temporada ...
1 Alfombra1 2006
2 Alfombra2 2007
...

Propiedades (prod_ID clave ajena a productos)
Meta_ID prod_ID key value ...
1 2 color verde
2 2 estilo moderno
3 1 color azul
4 1 estilo clásico

...

Sólo necesito cruzar los campos Productos.ID con Porpiedades.prod_ID y averiguar cuales de los Productos cumplen todas las condiciones introducidas en el formulario de busqueda.

Así por ejemplo, una búsqueda para una alfombra "verde" y "moderno" debería devolverme el ID 2 pero no el 1.

Lo que no consigo hacer es filtrar por más de un criterio, al intentar hacerlo por dos con la query del post anterior me da resultado 0 filas.

Espero que la aclaración no lie a nadie!! :)

Javier.
  #4 (permalink)  
Antiguo 13/01/2009, 14:17
 
Fecha de Ingreso: enero-2009
Mensajes: 5
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Criterios de busqueda

Cita:
Iniciado por javierfaus Ver Mensaje
Hola a tod@s,

Dejo un ejemplo de filtro de busqueda por un criterio (el cual funciona):

SELECT *
FROM productos p, propiedades prop
WHERE p.ID = prop.post_id
AND prop.key = "estilo"
AND prop.value = "Tradicional"
ORDER BY p.date DESC

Y otro que estoy intentando para dos pero que no funciona:

SELECT *
FROM productos p, propiedades prop
WHERE p.ID = prop.post_id
AND prop.key = "estilo"
AND prop.value = "Tradicional"
AND prop.key = "color"
AND prop.value = "rojo"
ORDER BY p.date DESC

Espero no haberme explicado horriblemente mal, un saludo y muchas gracias por adelantado.

javier.
Javier.. no soy muy experto en el tema.. de hecho estoy teniendo problemas parecidos.

Pero veo que en las condiciones del WHERE escribes por ejemplo AND prop.key = "estilo" y AND prop.value = "rojo" en la misma consulta, por eso te envia como resultado 0 filas. Prueba asignando un alias distinto a cada tabla y ve que pasa.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:21.