2016-03-15 2 views
0

Я разрабатываю asp.net данные, а я wold вставляю данные в один столбец. Я использую этот код в postgresql, он говорит это, но он дает мне эту ошибку. Вы можете мне помочь?ОШИБКА: более одной строки, возвращаемой подзапросом, используемым как выражение

ОШИБКА: более одной строки, возвращенная подзапрос, используемый в качестве состояния выражения SQL: 21000

SELECT ST_Line_Interpolate_Point (route.geom,(select (pk_accident)/(pk_fin-pk_debut) from route, accident_ma 
where route.num_route = accident_ma.num_route order by route.num_route)) 
from route,accident_ma where route.num_route = accident_ma.num_route order by route.num_route; 

ответ

1

ST_Line_Interpolate_Point является скалярной функцией это конструкция для того чтобы получить в качестве входного набора из двух значений.

в-Select-запроса "SELECT (pk_accident)/(pk_fin-pk_debut) от маршрута, accident_ma ГДЕ route.num_route = accident_ma.num_route ORDER BY route.num_route"

предположим, чтобы вернуть одно значение на выбранные записи (это значение будет использоваться функцией ST_Line_Interpolate_Point), однако in-select-query возвращает более одной записи.

В Oracle вы можете изменить свой запрос, добавив дополнительный фильтр

"И RowNum = 1" фильтр, для случаев, ни один оракул вы можете добавить предел 1 фильтр

select (pk_accident)/(pk_fin-pk_debut) FROM route, accident_ma WHERE route.num_route = accident_ma.num_route предел 1

Это должно решить проблему

+0

но если я ограничиваем 1 эти возвращать 1 значение, но я бы преобразование приложения запроса на всю таблицу – malyon

+0

Ограничение только на вспомогательном запросе, запрос - >: SELECT ST_Line_Interpolate_Point (route.geom, (SELECT (pk_accident)/(pk_fin-pk_debut) от маршрута, accident_ma ГДЕ route.num_route = accident_ma.num_route предел 1)) от маршрута, accident_ma ГДЕ маршрут. num_route = accident_ma .num_route ORDER BY route.num_route; – elirevach

+0

спасибо elirevach – malyon

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

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