我一直在嘗試不同的方式做到這一點,但不知道如何去最好的方式。PostgreSQL子查詢計算從不相關的模型
我有幾個模型都與父母'客戶'模型有關。對於這個例子(這與我的實際問題無關),讓我們假設客戶有電子郵件訂單和電話訂單。因此每個電子郵件訂單或電話訂單都與客戶有關,但彼此之間沒有任何關係。
我想在客戶端上運行一個查詢,並返回所有客戶端以及每個客戶端的訂單中的字段總數(例如:USD Amount - 兩個子模型中都存在的字段)對於這兩個訂單都是TAX(因此需要返回兩個彙總列)。
一種方法是在每個案例中運行子查詢和另一個子查詢 - 外部子查詢將兩個內部的總和相加。但是,在這種情況下,當我嘗試捕獲兩個字段時,出現錯誤,說明子查詢只能返回一列。
這種結構的最佳方式是什麼?
編輯:
表結構(與具有用於示例的目的,相同的結構的電子郵件/電話訂單大量簡化的)如下:
客戶端表 -
CREATE TABLE clients_client
(
id integer NOT NULL,
deleted boolean NOT NULL,
company_name character varying(100)
)
電子郵件訂單 -
CREATE TABLE clients_emailorders
(
id serial NOT NULL,
added_at timestamp with time zone NOT NULL,
deleted boolean NOT NULL,
tx_category integer NOT NULL,
status integer NOT NULL,
amount numeric(18,8) NOT NULL,
tax numeric(18,8) NOT NULL,
tx_id character varying(200) NOT NULL,
completed_at timestamp with time zone,
notes text,
client_id integer NOT NULL
)
電話訂購 -
CREATE TABLE clients_phoneorders
(
id serial NOT NULL,
added_at timestamp with time zone NOT NULL,
deleted boolean NOT NULL,
tx_category integer NOT NULL,
status integer NOT NULL,
amount numeric(18,8) NOT NULL,
tax numeric(18,8) NOT NULL,
tx_id character varying(200) NOT NULL,
completed_at timestamp with time zone,
notes text,
client_id integer NOT NULL
)
我想運行(而我什麼都沒有做什麼工作的,所以這是舉例)查詢是大意如下的內容:
SELECT "clients_client"."id", "clients_client"."company_name", total_order_amount, total_order_tax
FROM "clients_client"
WHERE "clients_client"."deleted" = False
凡「total_order_amount」是的SUM所有子模型的訂單金額和'total_order_tax'都是兩個子模型的稅額總和。
我應該補充說,每個客戶端可以有零個或更多的每個訂單類型。
'說子查詢只能返回一個column.'這是一個* *標子查詢。通常,子查詢可以產生多於一行的行數,實際上是一個表表達式。只要給它一個別名並參考它的字段。 – joop
請編輯您的問題,爲正在討論的表格和您正在使用的查詢添加'create table'語句。 [_Formatted_](http://stackoverflow.com/help/formatting)**文本**請[無屏幕截圖](http://meta.stackoverflow.com/questions/285551/why-may-i-not上傳圖片的代碼時,要求一個問題/ 285557#285557) –
我已編輯上面的原始問題,以包括此。 – visionjcv