2016-03-15 3 views
0

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

Error

ERROR: more than one row returned by a subquery used as an expression SQL state: 21000

UPDATE accident_ma 
    SET geom_acc = (
    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 limit 1)) 
    from route, accident_ma 
    where route.num_route = accident_ma.num_route 
    order by route.num_route) 
    from route 
    where route.gid = accident_ma.gid; 
+0

Сообщение об ошибке очень четкое. Вы читали фактические слова об ошибке? Ваш вложенный SELECT ('select (pk_accident)', если я правильно читаю) возвращает более одной строки, и вы не можете назначить этот результат (несколько строк) одному столбцу, что является вашим UPDATE делать. –

+0

Да, но я не знаю, как я должен сделать, чтобы отправить значение и значение ......... в geom_acc вы можете мне помочь? – malyon

+0

no SELECT ST_Line_Interpolate_Point возвращает больше, чем строка !!! – malyon

ответ

2

Мне кажется, что вы усложняют дело чрезвычайно. Даже с несколькими событиями из accident_ma на одном route.geom ниже должно работать нормально:

UPDATE accident_ma a 
    SET geom_acc = ST_Line_Interpolate_Point(r.geom, a.pk_accident/(a.pk_fin-a.pk_debut)) 
    FROM route r 
    WHERE a.num_route = r.num_route 
    AND a.gid = r.gid; 

В коде коррелированный подзапрос будет возвращать несколько строк при наличии нескольких аварий на одном маршруте. В этом решении это не произойдет: каждый UPDATE работает при одном несчастном случае.

+0

это говорит мне ОШИБКА: синтаксическая ошибка в точке «ОТ» LINE 6: FROM route r ^ – malyon

+0

Я не понимаю, что он не может работать с маршрутом r !! помогите мне pleace patrick – malyon

+0

Я не могу помочь вам, если вы не скажете мне, что случилось. Я добавил псевдоним таблицы, см. Обновленный ответ. – Patrick

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

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