2014-01-08 2 views
1

Я получаю сообщение об ошибке, указывающее неверное число аргументов, когда я запускаю следующий запрос:Неправильное количество аргументов SQL MSACCESS

SELECT 
population_postcodes.*, 
target_postcodes.*, 
SQR(EXP(population_postcodes.longitude- target_postcodes.longitude, 2) + EXP(population_postcodes.latitude-target_postcodes.latitude, 2)) as distance 
FROM population_postcodes INNER JOIN target_postcodes on Population_postcodes.Population_postcode = Target_postcodes.Target_postcode; 

Может кто-нибудь пожалуйста, предложить, как я могу это исправить?

Я также попытался следующий код:

SELECT Population_postcodes.*, Target_postcodes.* 

FROM population_postcodes 
INNER JOIN target_postcodes 
ON Population_postcodes.Population_postcode = Target_postcodes.Target_postcode 
SQR((population_postcodes.longitude- target_postcodes.longitude)^2 + (population_postcodes.latitude-target_postcodes.latitude)^2) as distance; 

И этот код:

 SELECT Population_postcodes.*, Target_postcodes.*, SQR((population_postcodes.longitude- target_postcodes.longitude)^2 + (population_postcodes.latitude-target_postcodes.latitude)^2) as distance 
FROM population_postcodes 
INNER JOIN target_postcodes 
ON Population_postcodes.Population_postcode = Target_postcodes.Target_postcode; 
+0

Одна идея заключается в использовании правильных тегов :) http://stackoverflow.com/questions/20994005/calculating-distance-pythagoras-and-running-count-in-sql-query#comment31549134_20994005 – Fionnuala

+0

Ха-ха-Ремо Я получаю он, пытаясь исправить это сейчас, запомнит совет;) –

ответ

0

Exp нужен один параметр, вы даете два.

Старый: EXP(population_postcodes.longitude- target_postcodes.longitude, 2)

Новое: (population_postcodes.longitude- target_postcodes.longitude)*(population_postcodes.longitude- target_postcodes.longitude)

0

Попробуйте заменить ...

EXP(<expression>, 2) 

... до ...

<expression>^2 

В Access, функция EXP возвращает e (основание натуральных логарифмов), поднятых до степени. Чтобы поднять выражение к мощности, используйте оператор ^.

В вашем случае, быть осторожным в скобки выражения, например ...

(population_postcodes.longitude- target_postcodes.longitude)^2 

... чтобы заставить власть быть применен последним. По умолчанию оператор^вычисляется перед оператором -.

+0

Дорогой Брайан благодарит за помощь, однако ее все еще не работает. Вот мой текущий запрос:.. ВЫБРАТЬ Population_postcodes *, Target_postcodes * ИЗ population_postcodes INNER JOIN target_postcodes ON Population_postcodes.Population_postcode = Target_postcodes.Target_postcode SQR ((population_postcodes.longitude- target_postcodes.longitude)^2 + (population_postcodes.latitude -target_postcodes.latitude)^2) как расстояние; –

+0

Попробуйте переместить выражение 'distance' в предложение' SELECT', как в следующем: 'SELECT Population_postcodes. *, Target_postcodes. *, SQR ((population_postcodes.longitude- target_postcodes.longitude)^2 + (population_postcodes.latitude-target_postcodes .latitude)^2) как расстояние FROM population_postcodes INNER JOIN target_postcodes ON Population_postcodes.Population_postcode = Target_postcodes.Target_postcode; ' –

+0

по какой-то причине по-прежнему дает пустую таблицу с созданными именами столбцов, представляющими имена таблиц и все их столбцы, а также новый столбец расстояния ... –

Смежные вопросы