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

Consulta mysql

Estas en el tema de Consulta mysql en el foro de Bases de Datos General en Foros del Web. Cómo hago para seleccionar datos de dos columnas e insertarlos en un mismo campo. Me explico, tengo dos campos de coordenadas, una para longitu y ...
  #1 (permalink)  
Antiguo 25/06/2010, 07:22
 
Fecha de Ingreso: octubre-2003
Ubicación: Bogotá
Mensajes: 48
Antigüedad: 20 años, 6 meses
Puntos: 0
Consulta mysql

Cómo hago para seleccionar datos de dos columnas e insertarlos en un mismo campo. Me explico, tengo dos campos de coordenadas, una para longitu y otra para latitud. Necesito seleccionarlos y meterlos en un mismo campo mediante un update. Estos datos deben quedar separados por un espacio.
  #2 (permalink)  
Antiguo 25/06/2010, 07:46
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Consulta mysql

Código MySQL:
Ver original
  1. mysql> DESC coordenadas;
  2. +----------+------+------+-----+---------+-------+
  3. | Field    | Type | Null | Key | Default | Extra |
  4. +----------+------+------+-----+---------+-------+
  5. | latitud  | text | YES  |     | NULL    |       |
  6. | longitud | text | YES  |     | NULL    |       |
  7. | lat_lon  | text | YES  |     | NULL    |       |
  8. +----------+------+------+-----+---------+-------+
  9. 3 rows in set (0.03 sec)
  10.  
  11. mysql> INSERT INTO coordenadas (latitud,longitud) VALUES('65','73');
  12. Query OK, 1 row affected (0.00 sec)
  13.  
  14. mysql> SELECT *FROM coordenadas;
  15. +---------+----------+---------+
  16. | latitud | longitud | lat_lon |
  17. +---------+----------+---------+
  18. | 65      | 73       | NULL    |
  19. +---------+----------+---------+
  20. 1 row in set (0.02 sec)
  21.  
  22. mysql> UPDATE coordenadas SET lat_lon=CONCAT(latitud,' ',longitud);
  23. Query OK, 1 row affected (0.00 sec)
  24. Rows matched: 1  Changed: 1  Warnings: 0
  25.  
  26. mysql> SELECT *FROM coordenadas;
  27. +---------+----------+---------+
  28. | latitud | longitud | lat_lon |
  29. +---------+----------+---------+
  30. | 65      | 73       | 65 73   |
  31. +---------+----------+---------+
  32. 1 row in set (0.00 sec)

así?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 25/06/2010, 09:06
 
Fecha de Ingreso: octubre-2003
Ubicación: Bogotá
Mensajes: 48
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: Consulta mysql

Oye, como son datos espaciales tengo que ingresarlos con la funcíon GeomFromText, un ejemplo de como lo estoy haciendo manualmente es así:

UPDATE `tabla1`.`sites` SET `geometria` = GeomFromText( 'POINT (-71.8356 6.9823)' )

cómo sería esa actualizacón según como me indicaste?

Última edición por GERMANCHO0222; 25/06/2010 a las 09:25
  #4 (permalink)  
Antiguo 25/06/2010, 10:10
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Consulta mysql

Esperemos que alguien te colabore. Nunca he usado extensiones espaciales en mysql.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 25/06/2010, 10: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, 5 meses
Puntos: 2658
Respuesta: Consulta mysql

Primero debes insertar el campo como GEOMETRY, pero para ello la tabla no debe ser InnoDB, sino MyISAM.
Código MySQL:
Ver original
  1. ALTER TABLE `tabla` ENGINE = MyISAM ROW_FORMAT = DYNAMIC;
Luego debes hacer el update, creando la cadena necesaria. Ten en cuenta que la conversión implícita de DOUBLE o FLOAT trunca la cantidad de dígitos a 4, con lo que se pierde precisión. Es conveniente usar FORMAT para evitarlo:
Código MySQL:
Ver original
  1. UPDATE `tabla`
  2. SET GEO = GeomFromText(CONCAT('POINT(', FORMAT(longitud,15),' ', FORMAT(latitud,15),')'));
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: mysql
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:09.