2016-07-15 21 views
0

我遇到了使用Oracle 11g快速版設置的SQL數據庫的問題。我希望能夠運行一個SELECT查詢,其中對於每個客戶,我想顯示客戶的號碼以及所有該客戶的信用交易(具有'C'類型的交易)金額爲開戶狀態。跨多個表和行/列進行查詢

問題......我已經查看了不同類型的查詢命令,我完全失去了如何以最簡單的術語格式化此命令。任何幫助,將不勝感激。這裏是我的表格式:

CREATE TABLE Customer_DML 

    CustomerNumber CHAR(12) CONSTRAINT customer_pk PRIMARY KEY, 

    SSN CHAR(9) CONSTRAINT customer_uq_ssn UNIQUE, 

    FirstName VARCHAR2(25) CONSTRAINT customer_nn_fname NOT NULL, 

    LastName VARCHAR2(25) CONSTRAINT customer_nn_lname NOT NULL, 

    Telephone CHAR(10), 

    DateOfBirth DATE 
); 



CREATE TABLE Account_DML (

    AccountNumber CHAR(15) CONSTRAINT account_pk PRIMARY KEY, 

    Type CHAR(1) CONSTRAINT account_ck_type CHECK (Type IN ('S','C')), 

    DateCreated DATE DEFAULT SYSDATE CONSTRAINT account_nn_datecreated NOT NULL, 

    Status VARCHAR2(10) CONSTRAINT account_nn_status NOT NULL, 

    Customer CHAR(12) CONSTRAINT account_fk_customer REFERENCES 
Customer_DML(CustomerNumber) 

ON DELETE CASCADE 
); 


CREATE TABLE Transaction_DML (

    TransactionNumber CHAR(15) CONSTRAINT transaction_pk PRIMARY KEY, 

    Type CHAR(1) CONSTRAINT transaction_ck_type CHECK (Type IN ('D','C')), 

    Amount Number(10,2) CONSTRAINT transaction_nn_amount NOT NULL, 

    Account CHAR(15) CONSTRAINT transaction_fk_account REFERENCES Account_DML(AccountNumber) 

ON DELETE SET NULL 
); 

我至今是沿着這些線路:

SELECT c.CustomerNumber, 
t.SUM(Amount) AS SumAmt 
FROM Customer_DML c, Account_DML a 
ON c.CustomerNumber = a.Customer 
JOIN Transaction_DML t 
ON a.Customer = a.AccountNumber 

,但我有我真的關閉這個基地的感覺。

任何提示或解決方案將不勝感激。如果你需要更多信息,我會很樂意提供我能做的。

回答

0

簡單規則:從不FROM子句中使用逗號。 始終使用使用正確的,明確的JOIN語法。

您還缺少一個GROUP BY,所以我覺得你的意思是:

SELECT a.Customer as CustomerNumber, SUM(t.Amount) AS SumAmt 
FROM Account_DML a 
JOIN Transaction_DML t 
    ON t.Account = a.AccountNumber 
GROUP BY a.Customer; 

你並不需要加入到客戶表,因爲Account表有需要聚集的客戶號。

+0

當您使用「帳戶表」時,是指Account_DML還是帳戶列?我嘗試將它粘貼到我的命令行中,並且出現了一些錯誤。 – Smackelbap

+0

而當我正在糾正這是「Account_DML」時,我在第5行出現錯誤,表示「C」。「客戶」:無效的標識符。 – Smackelbap

+0

我提交了更正的修改。嘗試將c.Customer更改爲a.Customer,同時在select和group中都選擇。 –