Tengo una tabla de códigos postales y quiero actualizar cada código postal con sus 3 vecinos más cercanos. Es decir, para llenar los espacios en blanco en esta tabla:mySQL - actualizar varias columnas con una selección que devuelve varias filas
postcode nearestPostcode1 nearestPostcode2 nearestPostcode3
_______________________________________________________________
KY6 1DA - - -
KY6 1DG - - -
KY6 2DT - - -
KY6 1RG - - -
....
que he descubierto una consulta SELECT para encontrar los códigos postales más cercanos y aquí es una manera torpe la primera fila se podría actualizar:
update table1 set
nearestPostcode1 = (select query for returning the first nearest postcode),
nearestPostcode2 = (select query for returning the second nearest postcode),
nearestPostcode3 = (select query for returning the third nearest postcode)
where postcode = 'KY6 1DA';
Sin embargo, esto generará 3 consultas de selección para cada actualización de fila. Sería más eficaz si había alguna manera de hacer lo que se expresa por esta pseudo código:
update table1 set
(nearestPostcode1, nearestPostcode2, nearestPostcode3) =
(select query to return the 3 nearest postcodes)
where postcode = 'KY6 1DA';
La 'consulta de selección' en las miradas por encima de la siguiente manera:
select postcode from postcodeTable
order by <equation to calculate distance> ASC
limit 3
¿Hay alguna forma de las filas devueltas desde la selección para ponerlas en un formulario que se pueden usar para actualizar varios campos? Gracias.
¿Cómo se determina el "código postal más cercano"? – Thomas
@Thomas latitud y longitud también se almacenan en la tabla de códigos postales y los convierto en metros y uso pythageros – spiderplant0