Postgresql
錯誤:子查詢必須只返回一列
我有兩張桌子,一張是
Category
,另一張是Product
。表說明是
類別
- name
- 描述
- parent_id(自引用鍵)(最多可分為 3 級)
產品
- name
- 描述
- 類型
- category_id(類別表的外鍵)
我想在單個產品上顯示所有類別以及相關產品。因此,為了獲取相關類別,我使用以下查詢。我可以在自引用表上進行左連接,但我無法獲取產品數據列表,因為這是一個子查詢,而子查詢只會返回一個列。
select cat1.id, ARRAY(select name, type, description from product where product.category_id = cat1.id) as category_1_products_data, cat2.id, ARRAY(select name, type, description from product where product.category_id = cat2.id) as category_2_products_data, cat3.id, ARRAY(select name, type, description from product where product.category_id = cat3.id) as category_3_products_data from category cat1 left join category cat2 on cat2.parent_id = cat1.id left join category cat3 on cat3.parent_id = cat2.id where cat1.parent_id is null;
錯誤:子查詢必須只返回一列第 2 行:cat1.id,(從…中選擇名稱、類型、描述
數組的所有元素必須具有相同的類型;當使用子查詢構造數組時,最簡單的方法是要求查詢只返回一列。
但是您可以使用行建構子使子查詢返回類型為複合類型的單個列:
ARRAY(SELECT ROW(name, type, description) FROM ...)