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

compara campos bdd mysql

Estas en el tema de compara campos bdd mysql en el foro de Mysql en Foros del Web. Hola a todos, necesito hacer una consulta un tanto compleja y no sé como desarrollarla, tengo en una tabla dos campos: val --> cuyo contenido ...
  #1 (permalink)  
Antiguo 20/05/2009, 07:19
 
Fecha de Ingreso: octubre-2007
Mensajes: 130
Antigüedad: 16 años, 6 meses
Puntos: 2
compara campos bdd mysql

Hola a todos, necesito hacer una consulta un tanto compleja y no sé como desarrollarla, tengo en una tabla dos campos:

val --> cuyo contenido es un dominio. Formato: "dominio.com"
host --> cuyo contenido es un servidor. Formato: "mail.dominio.com"

Necesito recuperar todos los campos cuyo host no tenga el mismo nombre que el dominio, es decir, normalmente el dominio y el servidor se llaman igual con la diferencia del "mail.", pero en algunos casos el dominio se llama, "dominio2.com" y el servidor "mail.dominio3.com", he intentado una consulta haciendo explode del contenido del host, para compara el nombre del dominio de estos dos campos pero no me funciona en mysql, estoy usando Navicat para probar esto:

Cita:
select * from dns_recs where val is not like explode("mail.",host)
alquien sabe como podría resolver esta query??? gracias!

Última edición por auri501; 20/05/2009 a las 07:25
  #2 (permalink)  
Antiguo 21/05/2009, 14:45
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 2 meses
Puntos: 45
Respuesta: compara campos bdd mysql

Prueba con esto y nos cuentas

Código sql:
Ver original
  1. SELECT * FROM tu_tabla WHERE dominio = (SELECT SUBSTRING(host,6) FROM tu_tabla)

Saludos!
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
  #3 (permalink)  
Antiguo 25/05/2009, 04:18
 
Fecha de Ingreso: octubre-2007
Mensajes: 130
Antigüedad: 16 años, 6 meses
Puntos: 2
Respuesta: compara campos bdd mysql

me dice, FUNCTION substring does not exist... estoy haciendo la consulta desde Navicat...
  #4 (permalink)  
Antiguo 25/05/2009, 05:21
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: compara campos bdd mysql

La clave es lo que te ha dicho Genetix, el uso de substring.
Código sql:
Ver original
  1. SELECT * FROM tu_tabla WHERE dominio <> SUBSTRING(host,6)

Si sigue sin funcionar podríamos probar alguna otra función para el manejo de cadenas.

Última edición por jurena; 25/05/2009 a las 05:30
  #5 (permalink)  
Antiguo 25/05/2009, 07:39
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: compara campos bdd mysql

Cita:
Iniciado por auri501 Ver Mensaje
me dice, FUNCTION substring does not exist... estoy haciendo la consulta desde Navicat...
El Navicat, sin que lo sepas (generación interna de código) le pone un espacio a la sentencia entre el SUBSTRING y el parétesis.
Eso genera el error, ya que MySQL no admite que haya espacios entre ambos.

La solución es modificar el estado del parser de MySQL ejecutando:
Código mysql:
Ver original
  1. SET sql_mode = "IGNORE_SPACE";
Esto es una sentencia que se debe enviar el server antes de ejecutar la otra consulta. La misma le indica al parser que las funciones entrarán con espacios entre nombre y paréntesis.

Pruébalo y veremos (yo ya lo probé con la última versión de Navicat y funcionó).
__________________
¿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 01/06/2009, 02:10
 
Fecha de Ingreso: octubre-2007
Mensajes: 130
Antigüedad: 16 años, 6 meses
Puntos: 2
Respuesta: compara campos bdd mysql

Funciona!
primero genere:
Cita:
SET sql_mode = "IGNORE_SPACE";
y luego hice esta consulta:
Cita:
SELECT * FROM dns_recs WHERE host = substring(val,6)
Muchas gracias a todos!!

y funciona perfectamente
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 00:02.