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

buscar en una tabla . en 2 campos

Estas en el tema de buscar en una tabla . en 2 campos en el foro de Mysql en Foros del Web. Hola tengo una duda... Tengo una tabla de productos y tengo un buscador que se puede buscar por id_producto (el codigo del producto) o por ...
  #1 (permalink)  
Antiguo 16/06/2009, 10:58
 
Fecha de Ingreso: diciembre-2002
Ubicación: arica 3334
Mensajes: 75
Antigüedad: 21 años, 4 meses
Puntos: 0
Pregunta buscar en una tabla . en 2 campos

Hola tengo una duda...

Tengo una tabla de productos y tengo un buscador que se puede buscar por id_producto (el codigo del producto) o por marca y modelo.
Ejemplo: Busco por Epson c42
la marca vendría siendo: Epson
el modelo vendría siendo c42.

La cosa es que el buscador envía la palabra completa: epson c42 y eso me complica.
Podría hacer un array, pero aún así no sirve array[0] = epson, array[1] = c42

no funcionaria porque ahora puedo buscar por ejemplo por:
PCF OEM 7.1 PCI ENM232-8VIA <-- la pagina recibe esto entero

y ahi la marca vendría siendo 2 palabras y todo lo demás el modelo.

La idea no es hacer un buscador por marca y modelo separado.
En los buscadores comunes no se como lo hacen, porque tengo entendido que todo tiene una mara y un modelo o descripcion del producto de manera corta.

alguna idea? ayuda de como hacer bien la consulta.

Saludos y gracias
__________________
Rodrigo Lopez
  #2 (permalink)  
Antiguo 16/06/2009, 11:03
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: buscar en una tabla . en 2 campos

Mira esto

http://dev.mysql.com/doc/refman/5.0/...xt-search.html
http://blog.unijimpe.net/busquedas-fulltext-en-mysql/

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 16/06/2009, 11:05
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: buscar en una tabla . en 2 campos

Usa CONCAT
SELECT marca, modelo FROM tu_tabla where CONCAT(marca,' ',modelo) LIKE '%PCF OEM 7.1 PCI ENM232-8VIA%'

Habría alguna otra opción con índices FULL-TEXT, pero tienen que ser tablas MyIsam...
Me pisó, huesos52.
Saludos.
  #4 (permalink)  
Antiguo 16/06/2009, 14:32
 
Fecha de Ingreso: diciembre-2002
Ubicación: arica 3334
Mensajes: 75
Antigüedad: 21 años, 4 meses
Puntos: 0
Respuesta: buscar en una tabla . en 2 campos

gracias por las respuestas, pero tengo un problema:

SELECT * FROM productos WHERE MATCH(marca, modelo) AGAINST ('epson')

resulta que tengo en marca la epson, pero no me arroja resultados

SELECT * FROM productos WHERE MATCH(marca, modelo) AGAINST ('epson c42') tampoco me da resultados

:/ porque es eso? ya hice los campos FULL-TEXT en marca y modelo al crear la tabla
__________________
Rodrigo Lopez
  #5 (permalink)  
Antiguo 16/06/2009, 14:35
 
Fecha de Ingreso: diciembre-2002
Ubicación: arica 3334
Mensajes: 75
Antigüedad: 21 años, 4 meses
Puntos: 0
Respuesta: buscar en una tabla . en 2 campos

perdon. se duplico la respuesta...
leer arriba
__________________
Rodrigo Lopez
  #6 (permalink)  
Antiguo 16/06/2009, 14:41
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: buscar en una tabla . en 2 campos

Cita:
Las búsquedas FullText tienes varias características interesantes.

El límite del 50%
Cuando una consulta se encuentra en mas del 50% de los registros de la tabla esto hace que la consulta sea invalida. Por que? Pues por que al estar en mas de la mitad de los registros los resultados ya dejan de ser información relevante. Por ejemplo supongamos que tenemos una tabla con 10000 registros, realizamos la búsqueda y esta devuelve como resultado 6000 registros, esto no me sirve de nada por que no voy a revisar 6000 registros para encontrar lo que necesito mientras que si el resultado son 20 registros significa que ha encontrado exactamente lo que busco.
Fuente: http://blog.unijimpe.net/busquedas-fulltext-en-mysql/

Es posible que el total de registros que tengas, mas del 50% coincidan con epson 42.
Creo que es esto... cuentanos si te funciona o no.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #7 (permalink)  
Antiguo 16/06/2009, 14:50
 
Fecha de Ingreso: diciembre-2002
Ubicación: arica 3334
Mensajes: 75
Antigüedad: 21 años, 4 meses
Puntos: 0
Respuesta: buscar en una tabla . en 2 campos

OH muchas gracias. ahora me queda claro. entonces es mejor usar CONCAT con los campos de la tabla?
lo hice así y me funcionó perfecto en todo caso.
Solo quería saber cual era la forma correcta. como lo hacen los sistemas e-commerce.
__________________
Rodrigo Lopez
  #8 (permalink)  
Antiguo 16/06/2009, 15:21
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: buscar en una tabla . en 2 campos

No creo que ninguna marca tenga el 50%. Cuanto tengas más datos no debería ser problema. Por otro lado está la búsqueda booleana con + y +. No te quedes ahí, sigue haciendo pruebas, pues esa es mejor solución que la de concat.
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 08:32.