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

Comprobar valor campo Tabla1 con cadena campo Tabla2

Estas en el tema de Comprobar valor campo Tabla1 con cadena campo Tabla2 en el foro de Mysql en Foros del Web. Hola a todos, he intentado un montón de formas y no logro hacerlo, así que pido por favor si me pueden orientar. Quiero obtener el ...
  #1 (permalink)  
Antiguo 16/05/2017, 14:25
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 20 años, 1 mes
Puntos: 3
Comprobar valor campo Tabla1 con cadena campo Tabla2

Hola a todos, he intentado un montón de formas y no logro hacerlo, así que pido por favor si me pueden orientar.

Quiero obtener el resultado de comparar el valor del campo de una tabla, con una cadena de un campo de otra tabla:

Por ejemplo, tengo el campo "id" de la Tabla1 con el valor "1066", y quiero saber si ese valor está en la cadena "Pepe Feliz 1066" del campo "fuente" de la tabla2.

¿Es posible realizar una consulta así?
  #2 (permalink)  
Antiguo 16/05/2017, 14:29
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Comprobar valor campo Tabla1 con cadena campo Tabla2

Si, se puede, pero tendrias que tener un campo en comun para poder juntar las tablas 1 y 2 a menos que hagas un producto cartesiano quedando algo como esto:

Código MySQL:
Ver original
  1. select * from tabla1,tabla2 where tabla2.fuente like '% + tabla1.id + %'
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 16/05/2017, 16:45
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 20 años, 1 mes
Puntos: 3
Respuesta: Comprobar valor campo Tabla1 con cadena campo Tabla2

Hola Libras, gracias por responder...

Ya había intentado hacerlo con LIKE sin resultados, ahora lo probé con el ejemplo que me has dado pero no imprime nada y debería hacerlo.

Leí un poco sobre esto del producto cartesiano, pero no me aclaro... creo que se me está complicando bastante.
  #4 (permalink)  
Antiguo 17/05/2017, 04:36
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 20 años, 1 mes
Puntos: 3
Respuesta: Comprobar valor campo Tabla1 con cadena campo Tabla2

Hola nuevamente...

También he probado hacer la consulta de la siguiente manera:

Código MySQL:
Ver original
  1. SELECT * FROM tabla2 INNER JOIN tabla1 ON tabla2.fuente LIKE '% + tabla1.id + %'

... y no me imprime resultados, pero debería hacerlo. Por lo tanto, algo estoy haciendo mal en el operador LIKE y no se donde está la falla.

Última edición por gnzsoloyo; 17/05/2017 a las 06:35
  #5 (permalink)  
Antiguo 17/05/2017, 06:41
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Comprobar valor campo Tabla1 con cadena campo Tabla2

Nunca te va a dar resultados porque NO estás consultando por el ID, sino buscando una cadena que dice " + tabla1.id + ".
No es lo mismo.

Y para que quede mas claro, si ID es un NUMERO, entonces NO debes usar LIKE. LIKE está definido para buscar patrones de caracteres, y el ID es un valor numérico, es decir es una MAGNITUD ESCALAR. En ese sentido, y como magnitud, puede ser mayor, menor, igual o pertenecer a un RANGO, pero NO es "parecido a".

¿Se entiende?

Ahora bien, si lo que deseas es usar un valor dado, NUMERICO como parte de una búsqueda en una cadena (usar un ID sugiere un gran defecto de diseño de los datos", lo que debes hacer es transformar ese ID en una cadena de texto que LIKE acepte, y para eso existen las funciones nativas.
Código MySQL:
Ver original
  1. SELECT * FROM tabla2 INNER JOIN tabla1 ON tabla2.fuente LIKE CONCAT('%', tabla1.id, '%');

Código MySQL:
Ver original
  1. SELECT * FROM tabla2 INNER JOIN tabla1 ON INSTR(tabla2.fuente , tabla1.id) > 0;
__________________
¿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 17/05/2017, 16:19
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 20 años, 1 mes
Puntos: 3
Respuesta: Comprobar valor campo Tabla1 con cadena campo Tabla2

Muchas gracias gnzsoloyo por ayudarme...

He estado viendo el tema en otros lados, pero tendré que leer mucho más sobre esto, porque he probado tus ejemplos y no me arroja resultados. Se que soy yo el que está haciendo mal las cosas!!!

Nuevamente gracias!
  #7 (permalink)  
Antiguo 18/05/2017, 06:21
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Comprobar valor campo Tabla1 con cadena campo Tabla2

Pues algo estás escribiendo mal...
Código SQL:
Ver original
  1. mysql> DROP TABLE IF EXISTS table1;
  2. Query OK, 0 ROWS affected (0.05 sec)
  3.  
  4. mysql> DROP TABLE IF EXISTS table2;
  5. Query OK, 0 ROWS affected (0.05 sec)
  6.  
  7. mysql> CREATE TABLE table1(id_table1 INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, texto VARCHAR(1000));
  8. Query OK, 0 ROWS affected (0.09 sec)
  9.  
  10. mysql> CREATE TABLE table2(id_table2 INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, fuente VARCHAR(100));
  11. Query OK, 0 ROWS affected (0.11 sec)
  12.  
  13. mysql> INSERT INTO table2(fuente) VALUES('Pepe, Feliz 1066');
  14. Query OK, 1 ROW affected (0.03 sec)
  15.  
  16. mysql> INSERT INTO table1(id_table1, texto) VALUES(1066, 'Texto de prueba');
  17. Query OK, 1 ROW affected (0.03 sec)
  18.  
  19. mysql> SELECT * FROM table2 INNER JOIN table1 WHERE table2.fuente LIKE CONCAT('%', table1.id_table1, '%');
  20. +-----------+------------------+-----------+-----------------+
  21. | id_table2 | fuente           | id_table1 | texto           |
  22. +-----------+------------------+-----------+-----------------+
  23. |         1 | Pepe, Feliz 1066 |      1066 | Texto de prueba |
  24. +-----------+------------------+-----------+-----------------+
  25. 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)
  #8 (permalink)  
Antiguo 19/05/2017, 18:42
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 20 años, 1 mes
Puntos: 3
Respuesta: Comprobar valor campo Tabla1 con cadena campo Tabla2

Hola gnzsoloyo, muchas gracias por seguir intentando ayudarme...!!!

La consulta tuya la he probado de varias maneras en el script, y también lo he hecho por consulta SQL en phpMyAdmin de Localhost y nada... me da como resultado todas las filas que contienen números.

No entiendo qué estoy haciendo mal.

Por ensayo error, encontré otra manera de resolver mi caso, pero con una condición: que el "id" a buscar en el campo "fuente" este puesto al principio, es decir, de esta manera: "1066 Pepe, Feliz", entonces me lo encuentra inmediatamente haciendo la consulta así:

Código SQL:
Ver original
  1. SELECT * FROM table2 INNER JOIN table1 ON table2.fuente = table1.id;

A través de las muchas lecturas que he realizado, traté de averiguar por que daba este resultado, pero no he podido saber por qué, y no se dónde más buscar.

Nuevamente gracias y saludos!

Etiquetas: cadena, campo, forma, tabla, valor
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:45.