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

[SOLUCIONADO] Traer resultados con palabras clave con un LIKE IN () ???

Estas en el tema de Traer resultados con palabras clave con un LIKE IN () ??? en el foro de Mysql en Foros del Web. Que tal, estoy haciendo un CMS de articulos, y una de las funciones es traer notas relacionadas a travez de las palabras clave, al cargar ...
  #1 (permalink)  
Antiguo 20/06/2013, 13:15
Avatar de @padawan@  
Fecha de Ingreso: julio-2005
Mensajes: 393
Antigüedad: 18 años, 9 meses
Puntos: 6
Traer resultados con palabras clave con un LIKE IN () ???

Que tal, estoy haciendo un CMS de articulos, y una de las funciones es traer notas relacionadas a travez de las palabras clave, al cargar una nota hay un campo de palabras clave en donde indico que se carguen las palabras separadas por coma simple ej: (palabra1, palabra2, parlabra3, etc,.....) etsando convencido que se podia hacer un :
Código MySQL:
Ver original
  1. SELCT * FROM TABLA1 WHERE campo LIKE IN ('palabra1, palabra2, parlabra3, etc,.....')

Pero no funciona se ve que eso no existe.

Hay algo parecido , algun comando similar que me permita hacer esto?? .

Muchas gracias.

Última edición por gnzsoloyo; 20/06/2013 a las 13:47
  #2 (permalink)  
Antiguo 20/06/2013, 15:36
Avatar de Lobito14  
Fecha de Ingreso: abril-2010
Mensajes: 222
Antigüedad: 14 años
Puntos: 17
Respuesta: Traer resultados con palabras clave con un LIKE IN () ???

Lo que quieres lo conseguirías solo con la palabra clave IN y entrecomillando cada palabra.

Código SQL:
Ver original
  1. SELCT * FROM TABLA1 WHERE campo IN ('palabra1', 'palabra2', 'palabra3');

Espero que te sea de ayuda.

Saludos.
  #3 (permalink)  
Antiguo 20/06/2013, 15:47
Avatar de @padawan@  
Fecha de Ingreso: julio-2005
Mensajes: 393
Antigüedad: 18 años, 9 meses
Puntos: 6
Respuesta: Traer resultados con palabras clave con un LIKE IN () ???

Muchas gracias, pero lo resolvi de la siguiente manera:


Código MySQL:
Ver original
  1. ALTER TABLE articulos ADD FULLTEXT(palabras_clave);
  2.  
  3. SELECT * FROM articulos WHERE MATCH(palabras_clave) AGAINST ('palabra1, palabra2, palabra3, palabra4')

No se cual será mas rapida y eficiente si el IN o esto que puse.

Saludos.

Última edición por gnzsoloyo; 20/06/2013 a las 16:31
  #4 (permalink)  
Antiguo 20/06/2013, 16:27
Avatar de Lobito14  
Fecha de Ingreso: abril-2010
Mensajes: 222
Antigüedad: 14 años
Puntos: 17
Respuesta: Traer resultados con palabras clave con un LIKE IN () ???

Pues tu solución, sinceramente, la veo un poco engorrosa teniendo la opción de usar solo una palabra clave: IN, pero si te vale pues perfecto.

Un saludo.
  #5 (permalink)  
Antiguo 20/06/2013, 16:33
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Traer resultados con palabras clave con un LIKE IN () ???

En realidad le hubiese convenido usar FIND_IN_SET(), por ejemplo:
Código MySQL:
Ver original
  1. mysql> SELECT FIND_IN_SET('PALABRA1', 'PALABRA1, PALABRA2, PALABRA3') ENCONTRADO;
  2. +------------+
  3. | ENCONTRADO |
  4. +------------+
  5. |          1 |
  6. +------------+
  7. 1 row in set (0.06 sec)
  8.  
  9. mysql> SELECT FIND_IN_SET('PALABRA', 'PALABRA1, PALABRA2, PALABRA3') ENCONTRADO;
  10. +------------+
  11. | ENCONTRADO |
  12. +------------+
  13. |          0 |
  14. +------------+
  15. 1 row in set (0.00 sec)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 20/06/2013, 16:38
Avatar de @padawan@  
Fecha de Ingreso: julio-2005
Mensajes: 393
Antigüedad: 18 años, 9 meses
Puntos: 6
Respuesta: Traer resultados con palabras clave con un LIKE IN () ???

Cita:
Iniciado por Lobito14 Ver Mensaje
Pues tu solución, sinceramente, la veo un poco engorrosa teniendo la opción de usar solo una palabra clave: IN, pero si te vale pues perfecto.

Un saludo.
Lo que sucede es que tengo que buscar las palabras claves en diferentes campos de texto, de esta manera utilizo un solo indice combinando varios campos. Con el IN tendria que hacer varios IN por cada campo o no? .
Pregunto, no se .
  #7 (permalink)  
Antiguo 20/06/2013, 16:39
Avatar de @padawan@  
Fecha de Ingreso: julio-2005
Mensajes: 393
Antigüedad: 18 años, 9 meses
Puntos: 6
Respuesta: Traer resultados con palabras clave con un LIKE IN () ???

Cita:
Iniciado por gnzsoloyo Ver Mensaje
En realidad le hubiese convenido usar FIND_IN_SET(), por ejemplo:
Código MySQL:
Ver original
  1. mysql> SELECT FIND_IN_SET('PALABRA1', 'PALABRA1, PALABRA2, PALABRA3') ENCONTRADO;
  2. +------------+
  3. | ENCONTRADO |
  4. +------------+
  5. |          1 |
  6. +------------+
  7. 1 row in set (0.06 sec)
  8.  
  9. mysql> SELECT FIND_IN_SET('PALABRA', 'PALABRA1, PALABRA2, PALABRA3') ENCONTRADO;
  10. +------------+
  11. | ENCONTRADO |
  12. +------------+
  13. |          0 |
  14. +------------+
  15. 1 row in set (0.00 sec)
No lo habia visto por ningun lado, es mas eficiente?
  #8 (permalink)  
Antiguo 20/06/2013, 16:48
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Traer resultados con palabras clave con un LIKE IN () ???

Depende de lo que haya que comparar.
FIND_IN_SET() devuelve verdadero o falos (0 ó 1) si una cadena se encuentra dentro de otra en tanto los valores de la segunda cadena estén separados por comas. Para otros casos no es funcional.

Para este tipo de cosas lo más conveniente es hacer lo más simple: Leer el manual de referencia...
http://dev.mysql.com/doc/refman/5.0/es/functions.html
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 20/06/2013, 17:02
Avatar de @padawan@  
Fecha de Ingreso: julio-2005
Mensajes: 393
Antigüedad: 18 años, 9 meses
Puntos: 6
Respuesta: Traer resultados con palabras clave con un LIKE IN () ???

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Depende de lo que haya que comparar.
FIND_IN_SET() devuelve verdadero o falos (0 ó 1) si una cadena se encuentra dentro de otra en tanto los valores de la segunda cadena estén separados por comas. Para otros casos no es funcional.

Para este tipo de cosas lo más conveniente es hacer lo más simple: Leer el manual de referencia...
http://dev.mysql.com/doc/refman/5.0/es/functions.html

Ah ok, no no me sirve. Lo que necesito es que me traiga los registros relacionados.
  #10 (permalink)  
Antiguo 20/06/2013, 17:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Traer resultados con palabras clave con un LIKE IN () ???

Es muy probable que no sea simplemente una consulta lo que debas hacer...
Es posible que debas combinar no sólo los datos, sino también algo de programación, o incluso stored procedures.
Hay muchas cosas que no se hacen de modo sencillo, ni con consultas elementales, y a veces ni siquiera con índices FULLTEXTS...
Pero para darte mejores ideas, probablemente sea conveniente que expliques lo que estás haciendo, al menos la idea, y que nos des una muestra de la estructura real de tus tablas, los un ejemplo de datos base y una muestra de cómo quieres el resultado.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 20/06/2013, 17:33
Avatar de @padawan@  
Fecha de Ingreso: julio-2005
Mensajes: 393
Antigüedad: 18 años, 9 meses
Puntos: 6
Respuesta: Traer resultados con palabras clave con un LIKE IN () ???

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Es muy probable que no sea simplemente una consulta lo que debas hacer...
Es posible que debas combinar no sólo los datos, sino también algo de programación, o incluso stored procedures.
Hay muchas cosas que no se hacen de modo sencillo, ni con consultas elementales, y a veces ni siquiera con índices FULLTEXTS...
Pero para darte mejores ideas, probablemente sea conveniente que expliques lo que estás haciendo, al menos la idea, y que nos des una muestra de la estructura real de tus tablas, los un ejemplo de datos base y una muestra de cómo quieres el resultado.
Con FULLTEXT pude lograr lo que necesito perfectamente.

Gracias .

Etiquetas: campo, clave, palabras, resultados, tabla
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 13:12.