Ver Mensaje Individual
  #6 (permalink)  
Antiguo 30/04/2011, 14:51
Avatar de gnzsoloyo
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, 5 meses
Puntos: 2658
Respuesta: SELECT campos iguales pero desconocidos


Bueno, el tema parece ser un poquito más complejo, y en todo caso hay que trabajar un poco en el lenguaje de programación y otro poco en la base de datos.
Por lo que entiendo, lo que quieres es que la tabla devuelta por la consulta te de en una columna, el host usado, y otra columna el link completo. ¿Es correcto?
El problema es que ni MySQL ni en SQL estándar no existe una función tal que te pueda reconocer una dirección de un website en una cadena, es decir, no puedes extraer la cadena "http://www.megaupload.com" de la cadena "http://www.megaupload.com/?d=VGXPITJ5". Al menos no puedes hacerlo en la base, porque hay demasiadas variaciones que debe detectar en diferentes direcciones.
Para que se entienda: Puedes intentar encontrar la secuencia ".com" y separar el segmento siguiente de la cadena, porque supondrías que eso es el segmento del link a a imagen, y el anterior es el host. Pero estarías equivocado. Eso sería si todos los hosts estuviesen en EE.UU... Con ello no encontrarías ningún host ".com.uk", ".com.es", ".com.dn", ".com.it", ".com.ar", ".com.br", ".com.co"... y un enorme etcétera.
O sea, como método, esa forma no sirve.
Pero tienes suerte: Los lenguajes de programación si tienen funciones específicas para reconocer los hosts en una cadena. Simplemente tienes que buscarlas en el manual de referencia de tu lenguaje (yo sólo te puedo decir cuál es en .Net, y mas o menos en PHP).
Con esa función, en tu aplicación lo que debes hacer es separar ambas cosas y guardarlas en columnas separadas. Luego, en la consulta, usas simplemente la columna del host y en la otra haces un
Código SQL:
Ver original
  1. SELECT host, CONCAT(host, link) link
  2. FROM direcciones
donde en host se guarda la direccion del site (por ejemplo "http://www.megaupload.com") y en link la cadena de petición ("/?d=VGXPITJ5"), y listo, CONCAT() se encarga de juntarlas en la consulta...
Como puedes ver la cosa no es difícil, pero requiere un poco de trabajo.
Yo te había sugerido GROUP_CONCAT() porque por tu post parecía que querías que se agruparan en un mismo registro todas las direcciones iguales del mismo host, pero esa no es la idea, por lo que pones en el último post.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)