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

Consulta de seleccion SQL

Estas en el tema de Consulta de seleccion SQL en el foro de Bases de Datos General en Foros del Web. Hola a todos, tengo el siguiente problema: - Tengo una tabla, llamada NEGOCIOS, en la cual uno de sus campos contiene palabras claves que sirven ...
  #1 (permalink)  
Antiguo 18/03/2008, 18:53
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
Consulta de seleccion SQL

Hola a todos, tengo el siguiente problema:

- Tengo una tabla, llamada NEGOCIOS, en la cual uno de sus campos contiene palabras claves que sirven para describir el negocio. Por ejemplo, si hablamos de una heladería, este campo contendría el siguiente valor: heladerías, postres, helados, tortas helados, postres frío-calientes. Cada palabra clave es separada por el carácter ",". El usuario ingresara una palabra clave, y mi consulta SQL debería arrojar aquellas filas en las cuales la palabra clave ingresada haya sido encontrada al menos una vez en el campo que se almacenan las palabras clave.
¿Como realizo una consulta semejante?. Intente hacerlo con los criterios IN y LIKE, pero no obtengo los resultados deseados.
Gracias de antemano.
__________________
Add, never Remove
  #2 (permalink)  
Antiguo 19/03/2008, 07:59
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 3 meses
Puntos: 13
Re: Consulta de seleccion SQL

Buenas,
Que Base de datos usas?
Mira las funciones de cadenas que provee tu BD.

Un saludo
  #3 (permalink)  
Antiguo 19/03/2008, 10:02
Avatar de Olizaldu2  
Fecha de Ingreso: agosto-2007
Mensajes: 58
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Consulta de seleccion SQL

Buenas

Yo no es que sea un experto en esto porque solo lo he estudiado un año lectivo, pero ¿si lo haces con los comodines no saldría? Es decir algo así como Select * from tabla where descripcion like ('%palabra que tu le metas%').

Si no funcionan los '%' prueba '*'.
Asi compara la palabra que tu le metas con el campo descripcion, y mira si aguna parte de ese campo contiene lo que has escrito.

Porque sino le pones los caracteres, compara lo que tu le metes con todo el campo, es decir, heladerias, postres, helados....." Lo toma todo como una cadena no como varias separadas por comas.

Espero que te sirva. Hasta pronto
  #4 (permalink)  
Antiguo 19/03/2008, 17:54
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
Re: Consulta de seleccion SQL

Antes que nada, les agradezco sus respuestas. De hecho olizaldu2, lo hice como vos decís, pero ocurre lo siguiente: supongamos que el usuario ingresa solamente la palabra 'os'. Encerrando la entrada del usuario entre comodines, los campos que contienen los siguientes datos machean:

- lomitos, empanadas, pizzas, bebidas
- heladerias, heladeria, helados, postres
- os, ...

Espero que haya sido un ejemplo claro de entender. A mi, en este caso en particular, me gustaría que me arrojara únicamente el último registro. Todavía no he encontrado la forma de lograrlo.
Estoy usando SQL Server 2000, y estoy viendo algunas funciones de cadena en un libro que me prestaron, pero todavía no sé como aplicarlas en este caso para encontrar una solución.
Saludos.
__________________
Add, never Remove
  #5 (permalink)  
Antiguo 19/03/2008, 18:20
 
Fecha de Ingreso: mayo-2007
Mensajes: 8
Antigüedad: 17 años
Puntos: 0
Re: Consulta de seleccion SQL

SELECT * FROM tabla WHERE columna like '%texto%'
/*Esto sirve para realizar busquedas p consultas por aproximacion. CuandoSe coloca el % (%frase%) adelante y atrás de una frase quiere decir que va a buscar cualquier valor posible que contenga esa frase tanto a la izquierda como a la derecha. Si se coloca solo despues de la frase el % (frase%) va a buscar todos los que empiezan con esa frase. Si se coloca antes el % de la frase (%frase) va a buscar todos aquellos que terminan con esa frase. No todas las base de datos manejan este simbolo % tambien pueden usar * como simbolo de busqueda*/
  #6 (permalink)  
Antiguo 20/03/2008, 05:08
Avatar de Olizaldu2  
Fecha de Ingreso: agosto-2007
Mensajes: 58
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Consulta de seleccion SQL

Buenas de nuevo.

Tienes razón Mariano, te va a coger todo lo que tenga "os".
¿Por lo menos sabes que es lo que te hace, y porque te lo hace mal no? Ahora solo hace falta buscar la solución.

Seguiré intentando ideas locas que se me ocurras. A ver si al final se soluciona, y aprendo algo más.

Suerte. Ciao
  #7 (permalink)  
Antiguo 20/03/2008, 10:03
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
Re: Consulta de seleccion SQL

Tengo varias opciones en vista para solucionar este inconveniente. Una de ellas es normalizar la base de datos. De esta forma, el campo METADATOS pasaria a ser una tabla, en donde cada registro sería una palabra clave distinta, que estaría asociada al ID del negocio que pertenece. De todas formas, haciendo esto todavía no logré realizar una consulta que me devuelva los resultados correctos. Otra de las formas es utilizando expresiones regulares, que sería la forma más sútil de lograr esto (según mi parecer), pero SQL Server no admite expresiones regulares tan sofisticadas como las que requiero para hacerlo (¿?). Así que, por ahora, estoy escogiendo esta opción: tener tres patrones distintos para machear. Ya que el campo METADATOS tiene la forma palabra1, palabra2, palabra3, palabraN... se dan tres patrones distintos: el macheo se puede dar en la primer palabra de la cadena ('<entrada_usuario>,%'); el macheo puede darse en alguna palabra que esté al medio de la cadena ('%, <entrada_usuario>,%') o bien puede darse que sea la última palabra ('%, <entrada_usuario>').
Si alguien conoce alguna forma alternativa de lograrlo, espero que me la pueda comentar.
Saludos a todos.
__________________
Add, never Remove
  #8 (permalink)  
Antiguo 24/03/2008, 05:50
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 3 meses
Puntos: 13
Re: Consulta de seleccion SQL

No entiendo el problema.

Tienes una tabla NEGOCIOS con un ID de PK
Tienes una tabla CLAVES con las palabras claves
Tienes una tabla NEGOCIOS_X_CLAVES con una FK a NEGOCIOS y una FK a CLAVES

La select:
select distinct NEGOCIOS.*
from negocios n
join negocios_x_claves nc on nc.id_negocio = n.id_negocio
join claves c on c.id_clave = nc.id_clave
where c.descripcion_clave = 'clave_que_buscas';

Creo que con esto te sobra para lo que necesitas.

Ya nos cuentas. Salu2
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 23:31.