Riveran
@Riveran
Astartes

Как решить ошибку subquery must return only one column?

Добрый день.
В результате sql запроса хочу получить объект с полем test которое будет массивом и будет содержать в себе различные объекты.
SELECT  sensor_instances.*,
		row_to_json((SELECT d
			FROM  (SELECT groups.*) d
		)) AS group,
		row_to_json((SELECT a
			FROM (SELECT addresses.*) a
		)) AS currentAddress,
		ARRAY(
			SELECT sensor_parameters.*
			FROM sensor_parameters
			WHERE sensor_parameters.sensortype IN (sensor_instances.sensortype)
		) AS test
FROM sensor_instances
LEFT JOIN groups ON groups.id = sensor_instances.groupid 
LEFT JOIN addresses ON sensor_instances.addressid = addresses.id
WHERE sensor_instances.id IN (89)

Но в результате запрос возвращает ошибку
Query 1 ERROR: ERROR:  subquery must return only one column
LINE 8:   ARRAY(

Может кто то знает как её решить?
  • Вопрос задан
  • 2945 просмотров
Пригласить эксперта
Ответы на вопрос 1
Что мы имеем работая с SQL:
SQL всегда возвращает таблцу в ответ.
Таблица состоит из строк и столбцов.
В одном столбце может быть только одно значение.

Итого:
1) Чтобы мы получили требуемое нам нужно склеить массив test в один столбец, можно использовать функцию CONCAT.
2) Если мы не хотим конкатить, то выводим для каждой записи test дубликат других данных (group, currentAddress) через JOIN.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы