2017-02-05 39 views
0

別のSQLの質問にちょっと固執しました....非等価結合を使用して結合する

すべての顧客アカウントのトランザクションを表示します。 JOIN USINGを使用して解決してください。名前、顧客番号、勘定タイプ、取引番号でソートします。

注:量は、非等価結合テーブルからのものです。正直なところ、構文が正しいかどうか、16-11-25のような形式の日付を取得する必要があるかどうかは不明です。どんな助けでも大歓迎です。

SELECT 
    First_name as "First", 
    Surname as "Last", 
    Customer_number as "Cust #", 
    wa.Account_type as "Type", 
    Transaction_number as "Trans #", 
    Transaction_type as "T", 
    Date_created('DD-MM-YY') as "Date", 
    Amount as "Amount" 
from 
    WGB_CUSTOMER wc 
    join WGB_ACCOUNT wa using (Customer_number) 
    join WGB_TRANSACTION wt using (Customer_number) 
    join WGB_ASSETS on (Amount>0) 
order by 
    1,2,4,5; 
+0

'JOINを... USING'は、OracleのPLに固有の省略形構文は次のとおりです。/SQL。移植性を最大にするには、それを避けて、伝統的な 'JOIN ... ON'構文を使用する必要があります。つまり、これは宿題のように見えます。 – Dai

+0

DBテーブルの設計がわからないため、あなたの質問にお答えすることはできません。 – Dai

+0

また、型の安全性を失うため、SQLで日付書式を使用しないでください。可能な限り元のデータ型がクエリのコンシューマに確実に渡されるようにする必要があります。そして 'yy-MM-dd'はどの国のシステムでも有効な日付フォーマットではないので、ISO 8601(一様な日付表現が必要な場合は' yyyy-MM-dd'を使用するべきですが、層、クエリではありません)。 – Dai

答えて

0

USING句はOracle固有のものではなく、標準SQLです。それは本当にただ近道ですので、

from 
    WGB_CUSTOMER wc 
    join WGB_ACCOUNT wa using (Customer_number) 

は、それはキーが両方のテーブルに同じ名前を持っているという事実に依存

WGB_CUSTOMER wc 
    join WGB_ACCOUNT wa 
     on wc.Customer_number = wa.Customer_number 

ための近道です。 間違いを招く可能性があるため、通常はショートカットを避けることをお勧めします。あなたの具体的な例に戻って来る

、私はあなたがWGB_ASSETSに参加し、その後量をテストしたいものだと思い、何かのように:

SELECT 
    First_name as "First", 
    Surname as "Last", 
    Customer_number as "Cust #", 
    wa.Account_type as "Type", 
    Transaction_number as "Trans #", 
    Transaction_type as "T", 
/* Date_created('DD-MM-YY') as "Date", < incorrect syntax */ 
    to_char(date_created, 'DD-MM-YY') as "Date" 
    Amount as "Amount" 
from 
    WGB_CUSTOMER wc 
    join WGB_ACCOUNT wa 
     on wc.Customer_number = wa.Customer_number 
    join WGB_TRANSACTION wt 
     on wc.Customer_number = wt.Customer_number  
    join WGB_ASSETS wg 
     on wc.Customer_number = wg.Customer_number 
    where wg.Amount>0 
order by 
    1,2,4,5; 
+0

@philipxy。良い点。私は私の答えを更新します... – BobC

+0

すべての助けをいただきありがとうございます!私の唯一の問題は、このクエリでTransaction_numberを一意にする方法です。 – DNkG

関連する問題